반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1차 풀이
일단 딱 봐도 효율성 문제 때문에 통과 안될거 알지만
이중 loop로 전화번호를 대조하는 방법으로 풀어봤다
def solution(phone_book):
answer = True
# 이중 loop로 비교
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if phone_book[i] in phone_book[j]:
print('y')
answer = False
else:
continue
return answer
당연하지만 불합격
해시를 사용하면 풀린다고 한다!
참고) 아래와 같이 쓰는 코드는 엄청 유용하다!
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):

2차 풀이
dictionary (해시)를 사용해서 풀었다
def solution(phone_book):
answer = True
# phone book의 모든 번호 중 하나가 다른 번호가 접두어면 false
dict = {}
phone_book.sort()
# key값만 있는 해시 생성
for i in range(len(phone_book)):
dict[phone_book[i]] = 1 # value는 1으로 통합
for number in phone_book:
makeword = ''
for num in number:
makeword += num
if makeword in dict and number != makeword:
# print(number, makeword)
answer = False
break
return answer
반응형
'코딩 테스트 > Programmers' 카테고리의 다른 글
[Python] [Level 2] 할인 행사 (dictionary로 풀기) (0) | 2023.03.08 |
---|---|
[Python] [Level 2] 피로도 (완전 탐색) (itertools 라이브러리permutation 순열로 풀기) (0) | 2023.03.07 |
[Python] [Level 2] 프린터 (Priority Queue 우선순위 큐) (0) | 2023.03.03 |
[Python] [Level 2] [1차] 뉴스 클러스터링 (feat. 다중 집합의 교집합, 합집합) (isalpha() 함수 이용하기) (0) | 2023.03.02 |
[Python] [Level 2] 해시 위장 (Hash, Dictionary) ...Hash Table 처럼 풀기! (0) | 2023.03.01 |