처음에 푼 방식이 맞았다고 뜨긴 했는데 다시 넣어보니 시간초과 이슈가 발생했다. 그래서 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
[Java] distinct()
먼저 distinct()를 설명하기 전에 저는 중복된 값이 포함될 수 있는 List에 중복이 있는지 확인하고 있으면 중복된 값을 반환해줘야 하는 코드를 작성해야 했었습니다. 그래서 어떤 식으로 코드를
seungwontech.tistory.com
ArrayList를 배열로 변환
JAVA - ArrayList에서 배열로, 배열에서 ArrayList로
프로그래밍을 하다보면 데이터 자료구조를 변환해야 할 때가 있다. 오늘 포스팅은 ArrayList or List 배열(Array)로 변환하는걸 다루어본다. 중요한건 자료구조를 바꾸는 것이지 자료형은 일치해야 한
mommoo.tistory.com
문자열 길이 기준 정렬 방법
https://sdardew-valley.tistory.com/59
[Java] 문자열 배열을 길이를 기준으로 정렬하기
Java에서 문자열 배열을 정렬하면 기본적으로는 사전 순대로 정렬을 해준다. ex) (b, abc, ca) -> (abc, b, ca) 이렇게 말고 위의 예시의 배열을 아래돠 같이 길이 순대로 정렬을 해보고자 한다. ex) (b, ca, a
sdardew-valley.tistory.com
이렇게 보니까 문제 해결 우선순위만 내가 결정하고 코드 짜기는 한 게 없는 거 같다...
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 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 |