배열로 주어진 번호들 중 (string으로 주어짐), 한 번호가 다른 번호의 접두어인 경우가 있는지 확인.
programmers.co.kr/learn/courses/30/lessons/42577
Python으로 구현
def solution(phone_book):
phone_book.sort()
lenArray = len(phone_book)
for i in range(lenArray):
test = phone_book[i]
j = 1
while j < lenArray - i:
if phone_book[i+j].startswith(test):
return False
j += 1
return True
- 먼저 주어진 배열을 오름차순으로 sort한다.
- 완전탐색을 하며, 앞에 오는 숫자가, 뒤에 오는 어떤 숫자의 일부분이면 False를 리턴한다.
다른 분들의 풀이
- 해시 혹은 리스트를 이용, 주어진 배열 자체를 복사하여, 한 배열의 원소를 다른 배열의 원소와 비교하는 방법도 있다.
- 로직 자체는 다 비슷한 듯 하다.
- 참고: zip() 함수
a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica", "Vicky")
x = zip(a, b)
# results - (("John", "Jenny"), ("Charles", "Christy"), ("Mike","Monica"))
'프로젝트들 > 코딩 테스트' 카테고리의 다른 글
[코딩 테스트] 프로그래머스 - 체육복 (Lv.1) in Python (0) | 2021.02.13 |
---|---|
[코딩테스트] 프로그래머스 - 튜플 (Lv.2) in Python (0) | 2021.02.06 |
[코딩테스트] 프로그래머스 - n진수 게임 (Lv.2) in Python (0) | 2021.02.06 |
[코딩테스트] 프로그래머스 - 가장 큰 수 (Lv2) in JS (0) | 2021.01.23 |
[코딩테스트] 프로그래머스 - 카펫 (Lv2) in JS (0) | 2021.01.22 |
댓글