[프로그래머스] 전화번호 목록_JAVA

2022. 2. 10. 18:08알고리즘/프로그래머스

반응형

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42577

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

 

문제 난이도는 어렵지 않았다. 다만 효율성 체크가 있어 단순 이중 for문으론 입구 컷 당할 수 있음

간만에 풀어보다 보니 초반에 삽질하고 4번째에 성공...

 

이 문제는 해시 파트에 들어가 있던데 굳이 해시맵을 쓰지 않아도 가능하다고 판단했다.

다만 나처럼 substring을 써서 접두어를 일일히 빼는 것보단 startsWith()을 사용하는 게 더 깔끔할 것 같다.

(다른 사람 풀이 보고 알아버렸지 뭐야)

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 + 1].length() > phone_book[i].length())
            {
                String prefix = phone_book[i + 1].substring(0,phone_book[i].length());
                if (phone_book[i].equals(prefix) == true)
                    return false;
            }   
        }
        return answer;
    }
}