[Programmers] 해시 > 전화번호 목록

hizzang·2021년 9월 16일
0
post-thumbnail

문제링크

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

제출코드

ver1 (실패: 배열을 이용한 풀이)

def solution(phone_book):
    answer = True
    phone_book.sort()
    for i in range(0, len(phone_book)):
        for j in range(1, len(phone_book)):
            if phone_book[i] in phone_book[j]:
                return False
            else:
                return answer
def solution(phone_book):
    phone_book.sort()
    for i in range(0, len(phone_book)):
        if phone_book[i] in phone_book[i+1]:
            return False
        else:
            return True
def solution(phone_book):
    phone_book.sort()
    for i in range(1, len(phone_book)):
        A=len(phone_book[i-1])
        if phone_book[i-1][0:A]==phone_book[i][0:A]:
            return False
        else:
            return True

ver2 (성공)

def solution(phone_book):
    phone_book.sort()
    for i in range(1, len(phone_book)):
        A=len(phone_book[i-1])
        if phone_book[i-1][0:A]==phone_book[i][0:A]:
            return False
    return True

ver 3 (모범답안)

def solution(phoneBook):
    phoneBook = sorted(phoneBook)

    for p1, p2 in zip(phoneBook, phoneBook[1:]):
        if p2.startswith(p1):
            return False
    return True

정리

🙄 zip()
동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 파이썬 내장 함수

Number = [1,2,3,4]
Name = ['hong','gil','dong','nim']
dic = {}
for number , name in zip(Number,Name): 
    dic[number] = name
print(dic)

#결과 : {1 : 'hong' , 2 : 'gil' , 3 : 'dong' , 4 : 'nim'}

🙄 str1.startswith(str2, beg=0, end=len(string))
str1이 str2로 시작할 때 True를, 아닌 경우엔 False를 반환

🙄 str1.endswith(str2, beg=0, end=len(string));
str1이 str2로 끝날 때 True를, 아닌 경우엔 False를 반환

*str2 : 찾고자하는 문자열
beg : 검색 시작 위치 (생략가능)
end : 검색 끝 위치 (생략가능)

0개의 댓글