[프로그래머스] 42577번

그녕·2023년 1월 25일
0
post-thumbnail

프로그래머스 전화번호 목록 문제

->처음에는 그 조합을 두개씩 묶어서 만들어서 첫 원소부터 비교를 해주려고 했는데 하다가 어려워서 포기함.. 그래서 다른 사람의 코드를 참고해서 풀었음

	#조합 만드는 방법
    # for i in range(len(phone_book)):
    #     for j in phone_book[i+1:]:
    #         data.append((phone_book[i],j))
    # #print(data)->잘 안돼서 다른걸로 찾아봄
    #print(phone_book)

내 코드

def solution(phone_book):
    answer = True
    phone_book= sorted(phone_book)
   
    for data1, data2 in zip(phone_book,phone_book[1:]):
        if data2.startswith(data1):
            answer= False
    return answer

#print(solution(["12","123","1235","567","88"]))

내가 알게 된것들

  1. zip 함수
print(list(zip(phone_book,phone_book[1:])))

이렇게 코드를 쓰게 되면 쌍으로 묶어주게 되는데 한 원소와 그 바로 뒤에 원소가 쌍으로 묶이게 된다.
"주의할 점"은 zip을 쓸때는 무조건 리스트로 받아줘야한다.

  1. startswith 함수
print("dfagd".startswith("abcd"))
print("abcde".startswith("abcd"))
### False
### True

이렇게 바로 시작하는지 확인을 할 수 있다.

  1. sorted 함수
    sorted 함수를 알긴 했는데 제대로 알지 못하는거 같다.
    무조건 숫자를 오름차순으로 하는건줄 알았는데
    그게 아니라 젤 처음 원소의 첫글자로 sort를 해주는 건가..? 질문하기
phone_book= sorted(phone_book)
print(phone_book)

>>그냥 phonebook은 ["119", "97674223", "1195524421"]
sorted phonebook은 ['119', '1195524421', '97674223']

0개의 댓글