[java]단어 정렬 - 백준1181
문제
풀이
문제 해석을 하자면,
- 중복없이 문제에서 주어진 조건에 맞게 정렬하여 출력을 해야한다.
풀이
- 문제의 난이도는 어렵지 않으나 “자료구조 사용과 정렬 커스텀“을 해볼 수 있는 좋은 문제이디ㅏ.
- HashSet 자료구조로 입력을 받아서 중복을 방지했고,
- Iterator 로 조회하여 String 배열로 값을 옮겼으며,
- Arrays.sort 정렬을 오버라이딩 하여 조건에 맞게끔 수정했다.
코드
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
HashSet set = new HashSet<>();
for(int i=0; i<N; i++){
String input = br.readLine();
set.add(input); // 중복불가
}
//run
String[] outArr = new String[N + 1];
Iterator iter = set.iterator();
int idx = 0;
while(iter.hasNext()){
outArr[idx++] = iter.next().toString();
}
Arrays.sort(outArr, 0, idx, (o1, o2) -> {
if(o1.toString().length() == o2.toString().length()) {
return o1.toString().compareTo(o2.toString());
}else {
return o1.toString().length() - o2.toString().length(); //asc
}
});
for(int i=0; i<idx;i++){
sb.append(outArr[i]).append("\n");
}
System.out.println(sb);
}
느낀점
생략
댓글남기기