[정렬] 2. 백준 - 전화번호 목록 일관성
문제
본문
전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오.
전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다.
예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자
긴급전화: 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;
}
소스보기
소스로딩 실패
댓글남기기