알고리즘 풀이

.programmers(전화번호 목록)

silvergoni 2022. 4. 7. 15:00
반응형

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

 

1. 2022.04.01 시도

소요시간: - 분(기억안남)

import java.util.*;

class Box {
    Box[] boxes = new Box[10];
    boolean isPhone;
}

class Solution {
    public boolean solution(String[] phone_book) {
        Arrays.sort(phone_book);
        Box wholeBox = new Box();
        for (String each: phone_book) {
            Box temp = wholeBox;
            for (int i=0; i<each.length(); i++) {
                int index = Integer.parseInt(each.charAt(i)+"");
                Box next = temp.boxes[index];
                if (next == null) {
                    temp.boxes[index] = new Box();
                } else if (next.isPhone) {
                    return false;
                }
                temp = temp.boxes[index];
            }
            temp.isPhone = true;
        }

        return true;
    }
}

풀이 접근 과정

먼저 정렬을 하고 노드를 이어가는 방식으로 진행했다.

현재 노드에 번호가 이미 있다면 끝난것으로 판단했다.

 

느낀점

  • 다른 풀이 보니 이미 정렬해서 지금 번호가 다음 번호에 포함된 것만 체크해도 잘 풀리는 듯 하다.
  • Trie 구조로 풀어보고 싶어서 구현체를 만들고 위와 같이 풀었다.

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형