[BOJ] 1181. 단어정렬 - (Java)
Problem
제출일 : 2020-04-02
문제 풀이 시간 : 30M
난이도 : ★★
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
Input
첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
Output
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다
Example
input
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
output
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
Solution & Inpression
Set을 이용하여 중복을 제거한 뒤 ArrayList에 옮겨 정렬하였습니다
정렬은 Comparator을 이용하여 문제에 조건에 따라 재정의 하였습니다.
Code
언어 : JAVA
메모리 : 35944 kb
실행 시간 : 720 ms
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Silver5_1181_단어정렬 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Set<String> set = new HashSet<>();
for (int i = 0; i < N; i++) {
set.add(sc.next());
}
ArrayList<String> data = new ArrayList<>(set);
Collections.sort(data, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() != o2.length())
return o1.length() - o2.length();
else
return o1.compareTo(o2);
}
});
for (String string : data) {
System.out.println(string);
}
}
}
'Problem > BOJ' 카테고리의 다른 글
[BOJ] 10814. 나이순 정렬 - (Java) (0) | 2020.04.02 |
---|---|
[BOJ] 2751. 수 정렬하기 2 - (Java) (0) | 2020.04.02 |
[BOJ] 2798. 블랙잭 - (Java) (0) | 2020.04.01 |
[BOJ] 12851. 숨바꼭질2 - (Java) (0) | 2020.03.22 |
[BOJ] 2251. 물통 - (Java) (0) | 2020.03.22 |