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

Yodi.Song·2020년 9월 11일
0

Problem Solving

목록 보기
8/19

문제 설명

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

풀이과정

  1. 문자열의 길이별로 나열해서 i번째의 number는 i+1부터 끝까지 서치하도록 한다.
  2. phone_book 리스트의 전체를 순회하며 해당 number (코드에서는 key)가 위치한 지점의 이후부터 끝까지 일치하는 것이 있는지 찾도록 한다.

처음 2번 과정에서 실수를 했다.

if key == str[0:n]:를 고려하지 않았기 때문에 ['112' , '33112'] 처럼 접두사에 포함되지 않는데도 False를 return하게 했다.

이런 문제를 수정하고 첫번째로 통과된 코드가 바로 이것



def solution(phone_book):
    phone_book.sort(key = len)
    
    for i, key in enumerate(phone_book):
        n = len(key)
        for str in phone_book[i+1:]:
            if key == str[0:n]:
                return False

    answer = True
    return answer

채점 결과
정확성: 84.6
효율성: 15.4
합계: 100.0 / 100.0

0개의 댓글