구름 LEVEL JAVA - 단어장 만들기 (난이도 2)
May 31, 2024
»
algorithm
구름 난이도 2 단어장 만들기
문제 요약
- 단어의 개수 N , 찾을 단어의 위치 K 가 공백을 두고 입력되고 다음줄에는 단어들을 N개 만큼 입력.
- 이때 정렬을 단어 길이 오름차순(a , aa , aaa …)으로 바꾸고 그 다음 사전순으로 바꾼다.
- K에 위치한 단어는?
코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine() , " ");
int N = Integer.parseInt(st.nextToken());
ArrayList<String> wordArr = new ArrayList<>();
for(int i=0; i<N; i++) {
wordArr.add(br.readLine());
}
wordArr.sort(new Comparator<String>(){
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(wordArr.get( Integer.parseInt(st.nextToken()) - 1 ));
}
}
풀이
- 입력 받은 N 만큼 반복문을 사용해 단어들을 ArrayList 에 입력 받는다.
- 입력 받은 ArrayList 를 sort 함수를 이용하되 특정 조건을 추가하려고 Comparator 를 재구성.
- 두 문자열의 길이가 같다면 compareTo 로 체크(사전순) , 아니라면 두 문자열의 길이를 뺀 순서로 체크.
- K 입력 된 숫자에 -1 을 해줘 해당 인덱스의 값을 확인한다.