[프로그래머스][python]전화번호 목록_시간초과_기준 두개로 sort하기

최혜원·2022년 9월 8일
0

관련문제

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

😥Problem: 시간초과

  • 이중포문 사용
  • sort를 한 후, 전체 전화번호를 돌아다니면서 나머지 전화번호들에 접두사가 있는 지 없는지를 구분.

기준 두 개로 sort

arr = sorted(arr, key = lambda x : (기준1, 기준2)
arr = sorted(arr, key= lambda x: (len, x)) #1차원 배열일 때

😊Solution

  • sort를 하게 되면 자동적으로 내 뒤에 있는거만 확인해도 접두사 확인할 수 있다.
  • 따라서 단일 for문만 작성해도 완성.
def solution(phone_book):
    answer = True
    phone_book = sorted(phone_book, key= lambda x: (len, x))

    for idx, phone in enumerate(phone_book[:-1]):
        if phone_book[idx+1][:len(phone)] == phone:
            return False
                    
    return answer

+ startwith str_내장함수

  • string 내장함수
  • 매개변수 string.startswith(value, start-idx, end-idx)
  • start-idx 와 end-idx 사이에 value가 있느냐
  • value 만 적을 경우 start, end 는 디폴트로 처음과 끝
  • 사용방법
txt = "Hello, welcome to my world."
x = txt.startswith("wel", 7, 20) 
print(x) #True
profile
ML_engineer

0개의 댓글