Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 프로토콜
- 개발자
- Spring
- 백준
- 정렬
- 다이내믹프로그래밍
- 스프링
- Lan
- SSAFY
- 코딩테스트
- DP
- 알고리즘
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- TCP
- 클라이언트
- 네트워크
- 싸피
- 구현
- BAEKJOON
- 서버
- 코딩공부
- 자바
- 개발공부
- cs공부
- 전송계층
- 알고리즘공부
- Dynamic Programming
- 네트워크모델
- Java
- IP
Archives
- Today
- Total
오늘 하루, develop
백준 5052번 - 전화번호 목록(java) 본문
💡 문제 링크
https://www.acmicpc.net/problem/5052
💡 아이디어
- 문자열 비교 횟수를 줄이기 위해 정렬을 우선 한다.
- 앞뒤 문자열만 비교한다. (바로 뒤 문자열이 나를 포함하지 않는데, 그 이후 문자열이 나를 포함할 수는 없다. 정렬되었기 때문.)
💡 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class BOJ_G4_5052_전화번호목록 {
public static int t;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
t = Integer.parseInt(br.readLine());
a:
for (int i = 1; i <= t; i++) {
int size = Integer.parseInt(br.readLine());
List<String> list = new ArrayList<String>();
for (int j = 0; j < size; j++) {
list.add(br.readLine());
}
//문자열 정렬
Collections.sort(list);
String prev = list.get(0); //앞 문자열
for (int j = 1; j < list.size(); j++) {
String cur = list.get(j); //현재 문자열
if (prev.length() <= cur.length() && cur.startsWith(prev)) { //앞 문자열을 접두사로 갖는 경우
System.out.println("NO"); //일관성이 없음
continue a;
}
prev = new String(cur);
}
//모든 문자열 확인 결과 일관성 없는 케이스가 없음 -> 일관성이 있음
System.out.println("YES");
}
}
}
틀린 부분이 있다면 댓글로 알려주세요 :)

'알고리즘' 카테고리의 다른 글
| 자바 Comparator 간단 정리 (feat. 정렬) (0) | 2024.07.11 |
|---|---|
| 백준 14719번 - 빗물 (java) (0) | 2024.07.11 |
| 백준 1744번 - 수 묶기(java) (2) | 2024.07.05 |
| 백준 27211번 - 도넛 행성(java) (0) | 2024.06.19 |
| 백준 2225번 - 합분해(java) (0) | 2024.05.17 |