[프로그래머스]전화번호 목록(JAVA)

JESS YANG·2021년 4월 28일
0
post-thumbnail

문제

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

내 코드

    private static boolean solution(String[] phoneBook) {
    	//1
        Arrays.sort(phoneBook);
        boolean result = true;
        //2
        for (int i=0; i<phoneBook.length-1; i++) {
            if (phoneBook[i+1].startsWith(phoneBook[i])) {
                result = false;
                break;
            }
        }
        return result;
    }

풀이

  1. 파라미터 phoneBook을 오름차순으로 정렬시킨다.
  2. 현재 원소값이 이전 원소값으로 시작하면 false return.

핵심 point! String 배열을 정렬시키면 어떤 방식으로 나열 되는지 이해한다.

다른사람 코드

    public boolean solution(String[] phone_book) {
        boolean answer = true;
        HashMap<String, String> hm = new HashMap<>();

        // 중복을 제거해서 해시 맵에 모두 저장
        for( String input : phone_book ) {
            hm.put(input, input);
        }

        for ( String target : phone_book) {
            // target을 분해하며 다른 곳에서 prefix 있는지 찾기
            for( int i=0; i< target.length(); i++) {
                if ( hm.get(target.substring(0,i)) != null) {
                    return false;
                }
            }

        }

        return answer;
    }

다른 관점! input 데이터를 분해해서 input의 prefix를 다른 string에서 찾는다.

0개의 댓글