본문 바로가기
정리/알고리즘

해시 -전화번호목록

by Hudini30 2022. 2. 3.

프로그래머스(해시) 전화번호목록

이번 문제는 하나의 번호를 접두사로 사용하는 번호가 있는지 확인하라는 문제이다.

이전 문제에서 정렬을 해서 풀수 있었다는것을 힌트로, 일단 정렬을 한 후, 그것을 접두어로 사용하는 것이 있는지 확인 하도록 했다. 접두어의 기준은 비교하려고 하는 문자열의 길이보다 접두어가의 길이가 큰경우는 아예 비교하지 않고 접두어를 바꾸고, 아닌경우에는 각 자리를 비교하면서 비교했다.

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;

        if(phone_book.length == 1) {
            return true;
        }

        Arrays.sort(phone_book);

        String preString = phone_book[0];

        for(int i = 1; i < phone_book.length; i++) {
            String compareNumberString = phone_book[i];

            if(preString.length() >= compareNumberString.length()) {
                preString = phone_book[i];
                continue;
            }

            for(int j = 0; j < preString.length(); j++) {
                if(preString.charAt(j) != compareNumberString.charAt(j)) {
                    preString = phone_book[i];
                    answer = true;
                    break;
                } else {
                    answer = false;
                }
            }

            if(!answer) {
                break;
            }
        }

        return answer;
    }
}

이렇게 했는데,

String method 중에 startsWith라는 것이 있다는것을 암.

그래서 다음과 같이 바꿈

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        if(phone_book.length == 1) {
            return true;
        }

        Arrays.sort(phone_book);

        String preString = phone_book[0];

        for(int i = 1; i < phone_book.length; i++) {
            String compareNumberString = phone_book[i];

            if(preString.length() >= compareNumberString.length()) {
                preString = phone_book[i];
                continue;
            }

            if(compareNumberString.startsWith(preString)) {
                return false; 
            } else {
                preString = compareNumberString;
            }
        }

        return true;
    }
}

네이버블로그

'정리 > 알고리즘' 카테고리의 다른 글

해시 - 베스트앨범  (0) 2022.02.04
스택/큐 - 프린터  (0) 2022.02.03
스택/큐 - 기능개발  (0) 2022.02.03
해시 - 위장  (0) 2022.02.03
해시-완주하지못한선수  (0) 2022.02.03

댓글