문제

기본적으로 주어진 코드 :
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
return answer;
}
}
정답
import java.util.Arrays;
class Solution {
public boolean solution(String[] phoneBook) {
Arrays.sort(phoneBook);
for (int i = 0; i < phoneBook.length - 1; i++) {
if (phoneBook[i + 1].startsWith(phoneBook[i])) {
return false;
}
}
return true;
}
}
주요 동작 원리
- 정렬:
Arrays.sort(phoneBook)
을 사용하여 문자열 배열을 사전순으로 정렬합니다. 이로 인해 접두사 관계가 있는 문자열이 인접하게 배치됩니다.- 예를 들어,
["119", "97674223", "1195524421"]
를 정렬하면["119", "1195524421", "97674223"]
가 됩니다.
- 접두사 확인:
- 정렬된 배열을 순회하면서 각 요소가 다음 요소의 접두사인지 확인합니다.
phoneBook[i + 1].startsWith(phoneBook[i])
를 사용하여 다음 문자열이 현재 문자열로 시작하는지 확인합니다.- 만약 접두사 관계가 발견되면 즉시
false
를 반환하여 접두사 관계가 있음을 나타냅니다.
- 결과 반환:
- 배열을 끝까지 순회해도 접두사 관계가 발견되지 않으면,
true
를 반환하여 접두사 관계가 없음을 나타냅니다.
Share article