문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/42577 (프로그래머스)

학습 키워드

  • 해시(HASH)

내가 작성한 통과 코드

해시로 푸는 문제라고 하는데 반복문으로 풀어버렸다.
최대 100만건의 데이터라 이중 for문은 시간 초과가 발생한다.
그래서 이중 for문 대신 한번만 반복문을 돌리도록 처리를 했다.

다음과 같은 순서로 풀이했다.

  • 배열을 문자열 기준으로 정렬한다.
  • 정렬된 문자열이므로 인접한 데이터는 비슷한 값이므로 인접값만 비교해도 된다.
    비교 방법으로는 특정문자열로 시작하는지 여부를 알 수 있는 startsWith 메서드를 활용했다.
import java.util.Arrays; 

class Solution {
    public boolean solution(String[] phone_book) {
        
        Arrays.sort(phone_book); 
        
        for(int i = 0 ; i<phone_book.length-1; i++) {
            if(phone_book[i+1].startsWith(phone_book[i])) {
                return false; 
            }
        }
   
        return true;
    }
}

새롭게 알게된 점

꼭 주어진 방법론 외에도 접근 방식을 다양하게 풀이할 수 있어 좋은 문제였다.
이 외에도 HashMap , TreeMap 등의 차이를 함께 공부할 수 있어 의미있는 문항이었다.

다음에 풀어볼 문제 - 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 (프로그래머스)



#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL

profile
Backend Developer (Financial)

0개의 댓글