728x90
반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 단어 정렬 문제~!
int N = Integer.parseInt(br.readLine());
String[] strings = new String[N];
for(int i=0; i<N; i++) {
strings[i] = br.readLine();
// 저장 완료
}
// 정렬 조건 두가지 --> 1. 길이짧은거 2. 사전 순서대로 (compareTo 이용)
Arrays.sort(strings, (e1, e2) ->{
if(e1.length() == e2.length()) {
return e1.compareTo(e2);
}
else{
return e1.length()-e2.length();
}
});
// 좀 헷갈리는 부분 .. .. : 같은 단어가 여러 번 입력 될 경우 한번씩만 출력
sb.append(strings[0]).append('\n');
for(int i =1; i<N; i++) {
if(i>0) {
if(!strings[i-1].equals(strings[i])) {
sb.append(strings[i]).append('\n');
}
}
}
System.out.println(sb);
}
}
오늘 배운점
1. String 배열을 정렬하는 방법 배움.
- - String 은 우선 compareTo 를 이용하여 해당 항목을 비교할 수 있고, 이는 사전순이다! (int 는 단순히 > < 등으로 비교한 반면 )
2. 정렬 조건 두가지 처리
- - 우선순위 첫번째꺼 길이짧은 것 -> 그다음에 사전 순서대로
3. 중복 피하기
- - 이미 정렬이 된 상태이므로 equalsTo 를 통해서 앞에 나온 항목이 출력이 됬다면 중복해서 출력하지 않는다.
https://makemethink.tistory.com/179
728x90
반응형
'이유's STUDY > 알고리즘 문제풀이' 카테고리의 다른 글
[ 백준 ] 10872- 팩토리얼 (0) | 2021.07.29 |
---|---|
[ 백준 ] - 10814번 나이순 정렬 / Java 이용 (0) | 2021.07.27 |
[ 백준 ] 11651- 좌표 정렬하기 2 (0) | 2021.07.27 |
[ 백준 ] 11650 - 좌표 정렬하기, Java 이용 (0) | 2021.07.27 |
[ 백준 ] 2108 번 통계학 - Java 이용 (0) | 2021.07.26 |