728x90
[백준] 5052번 - 전화번호 목록 (JAVA)
[ 접근 과정 ]
가장 중요하게 생각하는 것은 "JAVA의 String 관련함수를 얼마나 잘 사용하는가" 이다.
A.startsWith(B) 함수를 사용하여 문자열 A가 문자열 B로 시작하는지를 판단할 수 있다.
A.startsWith(B) : 문자열 A가 문자열 B로 시작하는가? (boolean)
A.endsWith(B) : 문자열 A가 문자열 B로 끝나는가? (boolean)
전화번호 목록을 정렬한 경우, 만약 "한 번호가 다른 번호의 접두어인 경우" 두 번호는 서로 이웃해 있을 수 밖에 없다.
이를 이용하여 "i+1번째 전화번호가 i번째 전화번호를 접두어로 갖는가"를 판단한다.
[ JAVA 코드 ]
// 5052번 - 전화번호 목록
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
// 0. 입출력 선언 / 초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int k=0; k<T; k++){
int N = Integer.parseInt(br.readLine());
ArrayList<String> arr = new ArrayList<>();
for(int i=0; i<N; i++){
arr.add(br.readLine());
}
// 1. 전화번호 목록 정렬
Collections.sort(arr);
// 2. i+1번째 전화번호가 i번째 전화번호로 시작하는지 검색
boolean flag = true;
for(int i=0; i<N-1; i++){
if (arr.get(i+1).startsWith(arr.get(i))){
flag = false;
break;
}
}
if (flag){
bw.write("YES" + "\n");
} else {
bw.write("NO" + "\n");
}
}
bw.flush();
bw.close();
br.close();
}
}
[ Rewind ]
1. 어려웠던 점
- String 관련 함수에 대해 잘 알지 못하였다.
2. 알게된 점
A.startsWith(B) : 문자열 A가 문자열 B로 시작하는가? (boolean)
A.endsWith(B) : 문자열 A가 문자열 B로 끝나는가? (boolean)
에 대해 잘 알게 되었다.
3. 개선 방향
- String 관련 함수에 대해 더 자세히 알아야 한다.
728x90
'백준' 카테고리의 다른 글
[BOJ] BOJ_25026 너의 평점은 (JAVA) (2) | 2024.07.16 |
---|---|
[BOJ] BOJ_11382 꼬마 정민 (JAVA) (2) | 2024.07.15 |
[백준] 9375번 - 패션왕 신해빈 (JAVA) (0) | 2023.02.05 |
[백준] 1746번 - 듣보잡 (JAVA) (0) | 2023.02.05 |
[백준] 10816번 - 숫자 카드 2 (JAVA) (0) | 2023.02.04 |