파게로그
[백준 1181번] 단어 정렬 본문
문제 링크: N번 제목
https://www.acmicpc.net/problem/문제번호
파이썬은 확실히 편하긴 하다... 말도 안되게 편하다고 생각한다.
다만 항상 Java에도 익숙해지는 것이 필요하다!
Python
# 입력
n = int(input())
words_set = set()
for i in range(n):
words_set.add(input())
# 리스트로 변환
words_list = list(words_set)
# 정렬
sorted_words_list = sorted(words_list, key = lambda x: (len(x), x))
# 출력
for item in sorted_words_list:
print(item)
Java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Comparator;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
/* 입력 */
HashSet<String> hashSet = new HashSet<String>();
ArrayList<String> list = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i=0; i<n; i++)
hashSet.add(sc.next());
/* 리스트로 변환 */
for (String item : hashSet)
list.add(item);
/* 정렬 */
// 익명 클래스를 통한 정렬
Comparator<String> wordComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() > s2.length()) return 1;
else if (s1.length() == s2.length()) {
// 길이가 같을 때에는,
return s1.compareTo(s2);
// 사전 순서대로 정렬.
}
else return -1;
}
};
Collections.sort(list, wordComparator);
/* 출력 */
for (String item : list)
System.out.println(item);
}
}
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 11651번] 좌표 정렬하기 2 (0) | 2020.11.15 |
---|---|
[백준 10814번] 나이순 정렬 (0) | 2020.11.15 |
[백준 6603번] 재귀를 통한 조합 구현 (0) | 2020.11.15 |
[백준 1991번] 트리 순회 (0) | 2020.11.14 |
[백준 2448번] 별 찍기 - 11 (0) | 2020.11.13 |
Comments