Better Code, Better Life

전화번호 목록 - 프로그래머스 - 파이썬 풀이 본문

Coding Test/Programmers

전화번호 목록 - 프로그래머스 - 파이썬 풀이

심재훈 2019. 7. 17. 17:00

문제 풀이

combinations을 써서 푸는 문제입니다.

두개씩 묶은 번호 중에

전화번호가 긴 것이 짧은 것을 포함하는 경우 False, 아니면 True입니다.

has_duplication 와 같은 함수를 만드는 연습과 combinations를 연습해보는 문제 같습니다.

함수를 작성할 때, return을 끝에 하나만 작성하면 디버깅 및 유지 보수가 쉬워집니다.

이 글의 반환값 문단을 참고하면 좋습니다.

해답 코드

from itertools import combinations

def has_duplication(a, b):
    duplication = False
    if len(a) >= len(b):
        if a[:len(b)] == b:
            duplication = True
    else:
        if b[:len(a)] == a:
            duplication = True
    return duplication

def solution(phone_book):
    answer = True
    for combination in combinations(phone_book, 2):
        a, b = combination
        if has_duplication(a, b):
            answer = False
            break
    return answer

 

도움이 됐다면 공감버튼을 눌러주세요! 질문이 있다면 댓글 달아주세요!

 

문제 링크

 

코딩테스트 연습 - 전화번호 목록 | 프로그래머스

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 r

programmers.co.kr

Comments