Java

[백준 5052] 전화번호 목록 (JAVA)

iheeeee6-6 2023. 7. 19. 11:07
728x90

https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

 

정렬을 사용하여 문제를 해결할 수 있었다!

처음에 제출했을때 왜맞틀이라 당황했지만

1

2

1

21

와 같은 반례가 존재한다.

두번째 숫자가 12일 경우에는 NO이지만 21이기때문에 YES이다.

따라서 .startWith()를 사용하여 구분하였다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int t = Integer.parseInt(br.readLine());
		for(int i=0;i<t;i++) {
			int n=Integer.parseInt(br.readLine());
			String[] str = new String[n];
			String result="YES";
			for(int j=0;j<n;j++) {
				str[j]=br.readLine();
			}
			Arrays.sort(str);
			
			for(int z=0;z<n-1;z++) {
                if(str[z].length()>str[z+1].length()) continue;
				if(str[z+1].startsWith(str[z])) {
					result="NO";
					break;
				}
			}
			System.out.println(result);
			
		}
	}

}

'Java' 카테고리의 다른 글

[백준 19701] 소 운전한다. (JAVA)  (0) 2023.08.03
[백준 1863] 스카이라인 쉬운거 (JAVA)  (0) 2023.08.02
[백준 2228] 구간 나누기 (JAVA)  (0) 2023.07.12
[백준 1947] 선물 전달 (JAVA)  (0) 2023.07.11
[백준 2157] 여행 (JAVA)  (0) 2023.07.11