문제

본문

전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오.
전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다.
예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자

긴급전화: 911
상근: 97 625 999
선영: 91 12 54 26

이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다.
전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가 걸리기 때문이다.
따라서, 이 목록은 일관성이 없는 목록이다.

입력

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50)
각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다.(1 ≤ n ≤ 10000)
다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 하나씩 주어진다.
전화번호의 길이는 길어야 10자리이며, 목록에 있는 두 전화번호가 같은 경우는 없다.

출력

각 테스트 케이스에 대해서, 일관성 있는 목록인 경우에는 YES, 아닌 경우에는 NO를 출력한다.

예제

입 력 출 력
911, 97625999, 91125426 NO
113, 12340, 123440, 12345, 98346 YES

문제원본

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


문제풀이

설명

문제에서 주어진 전화번호 목록중에서 각 전화번호가 다른 전화번호로 시작하는지를 확인하면 된다.
자바의 경우 특정 문자로 시작하는지 체크하는 함수를 제공하는데, 이 함수를 알고 있으면 쉽게 해결할 수 있는 문제이다.

체크할 문자가 특정 문자로 시작하는지 체크 (true/false)

startsWith 사용법 : str1.startsWith(str2) : str1문자열이 str2로 시작하는지 체크

  • true : 시작한다
  • false : 시작하지 않는다

체크할 문자가 특정 문자를 포함하고 있는 위치를 체크 (-1, 0, 1, . . .)

indexOf 사용법 : str1.indexOf(str2) : : str1문자열이 str2를 포함하고 있는 위치 체크

  • -1 : 포함하지 않는다.
  • 0, 1, .. : 포함하는 시작 위치값

/*
// 전화번호가 다른전화번호를 포함하는지 체크 
// 0이면 전화번호가 다른전화번호로 시작한다.
//if(str1.indexOf(str2) == 0) { 
*/
//전화번호가 다른전화번호로 시작하는지 체크
if(str1.startsWith(str2)) {                    
    result = "NO";
    break;                        
}

소스보기

소스로딩 실패

실행결과

그림

업데이트:

댓글남기기