컴퓨터/프로그래머스
프로그래머스 - 42577번: 전화번호 목록 [Java]
이상한 나그네
2023. 10. 22. 00:41
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42577
1. 코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book);
for(int i = 0; i < phone_book.length - 1; i++) {
if(phone_book[i].startsWith(phone_book[i + 1]) || phone_book[i + 1].startsWith(phone_book[i])) {
answer = false;
break;
}
}
return answer;
}
}
2. 설명
문자열 배열을 정렬하게 되면 길이가 아닌 문자열의 왼쪽 부분부터 비교를 진행하며 해당 문제에서는 문자 중 숫자만 입력이 진행되기에 숫자의 순서로 오름차순으로 정렬하게 됩니다. 예를 들어 [ "119", "97674223", "1195524421"] 배열이 존재하며 정렬하게 되면 [ "119", "1195524421", "97674223"]이렇게 정렬되기에 반복문을 통해 쉽게 시작하는 문자열인지 확인 가능하다.
해시를 사용한 문제라고 명시되어 있는데 정확히 어떻게 확인하는지 모르겠다.
3. 정리
- 문자열 정렬의 성질을 이용할 수 있다.
- String.startsWith() 메서드는 Parameter로 해당 문자열이 시작되면 true 아니면 false를 반환
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges