티스토리 뷰
728x90
문제
- 첫째 줄에 단어 개수 N을 입력받음
- N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어들을 N개 입력받음
- 아래의 조건에 따라 정렬
1. 길이가 짧은 것부터
2. 길이가 같으면 사전 순으로
고찰
Comparator를 이용하여 정렬하고 싶었지만, 오랜만에 코드를 짜는 것이였기 때문에 잘 기억이 안나 Comparable과 Comparator에 대해 다시 공부를 하고 코드를 작성하였다..
2022.07.05 - [JAVA] - [JAVA] Comparable / Comparator
문제 자체가 정렬 문제였기 때문에 해당 부분을 잘 이해하고 코드를 작성하니 어렵지 않게 코드를 작성할 수 있었다.
코드
import java.io.*;
import java.util.*;
class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] word = new String[N];
for(int i = 0; i<N; i++){
word[i] = br.readLine(); // 단어 입력 받기
}
// 단어 정렬(comparator 이용)
Arrays.sort(word, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
// 길이가 같은 경우, 사전 순으로 정렬
if(s1.length() == s2.length()){
return s1.compareTo(s2);
}else{
// 길이가 짧은 순으로 정렬
return s1.length()-s2.length();
}
}
});
// 반복되는 단어를 출력하지 않기 위해 아래와 같은 방법으로 출력
System.out.println(word[0]);
for(int i = 1; i<N; i++){
if(!(word[i].equals(word[i-1]))){
System.out.println(word[i]);
}
}
br.close();
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1436번 영화감독 숌(JAVA) (0) | 2022.07.07 |
---|---|
[백준] 1259번 팰린드롬수(JAVA) (0) | 2022.07.07 |
[백준] 1085번 직사각형에서 탈출(JAVA) (0) | 2022.07.05 |
[백준] 1018번 체스판 다시 칠하기(JAVA) (0) | 2022.07.05 |
[백준] 11729번 하노이 탑 이동 순서(JAVA) (0) | 2022.07.01 |
댓글