반응형
처음에 푼 방식이 맞았다고 뜨긴 했는데 다시 넣어보니 시간초과 이슈가 발생했다. 그래서 BufferedReader를 사용하여
최대한 시간을 줄여보았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
List<String> list = new ArrayList<>();
for(int i=0; i<N; i++){
list.add(br.readLine());
}
//1.단어 중복 제거
list = list.stream().distinct().collect(Collectors.toList());
String[] arr = list.toArray(new String[list.size()]);
//2.사전순으로 정렬
Arrays.sort(arr);
//3.길이 비교
for(int i=0; i<arr.length; i++){
Arrays.sort(arr, (String s1, String s2) -> s1.length() - s2.length());
}
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
br.close();
}
}
Comparator 익명 클래스를 사용한 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
List<String> list = new ArrayList<>();
for(int i=0; i<N; i++){
list.add(br.readLine());
}
//1.단어 중복 제거
list = list.stream().distinct().collect(Collectors.toList());
String[] arr = list.toArray(new String[list.size()]);
//2. 정렬하기
Arrays.sort(arr, 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();
}
}
});
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
br.close();
}
}
[참고한 블로그]
중복 제거
https://seungwontech.tistory.com/23
ArrayList를 배열로 변환
문자열 길이 기준 정렬 방법
https://sdardew-valley.tistory.com/59
이렇게 보니까 문제 해결 우선순위만 내가 결정하고 코드 짜기는 한 게 없는 거 같다...
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 18870 - 좌표 압축 (JAVA/ 자바) (0) | 2024.06.26 |
---|---|
[백준] 10814 - 나이순 정렬 (JAVA/ 자바) (0) | 2024.06.18 |
[백준] 11651 - 좌표 정렬하기 2 (JAVA/ 자바) (0) | 2024.06.11 |
[백준] 11650 - 좌표 정렬하기 (JAVA/ 자바) (0) | 2024.06.09 |
[백준] 1427 - 소트인사이드 (JAVA/ 자바) (0) | 2024.06.07 |