행궁동 데이터 엔지니어

반응형

문제링크

https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3#

 

알고리즘 연습 - 전화번호 목록 | 프로그래머스

실행 결과가 여기에 표시됩니다.

programmers.co.kr

내 풀이

간신히 통과했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(phone_book):
    answer = True
    for i in phone_book :
        len_num = len(i)
        com_list = [] #비교할 값 
        for j in phone_book : # i보다 긴 것들만 com_list에 append
            if i != j : # 같은 값일 때는 제외 함
                if len_num <= len(j) :
                    com_list.append(j)
 
        for k in com_list : # com_list와 i의 비교
            # print(k)
            while len(k) >= len_num : # k 가 i보다 길때까지만 비교한다
                if i == k :
                    answer = False
                    return answer
                k = k[:-1]
                # print(k)
    return answer

다른사람 코드 1번

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(phone_book):
    test = [123,123456,4234
    test.sort()
 
    for i in range(len(phone_book)-1):
        if(phone_book[i+1].find(phone_book[i]) != -1):
            print(test) # 숫자와 문자열은 정렬방식이 다르다, 위처럼 단순히 2개만 비교해도 가능한 이유는 문자열이 정렬되었기 때문.
            print(phone_book) 
            print(phone_book[i+1])
            print(phone_book[i])
            return False
    return True
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

다른사람코드 2번

1
2
3
4
5
6
7
8
def solution(phoneBook):
    answer = True
    for x in phoneBook:
        for y in phoneBook:
            if y != x:
                if y.find(x) == 0:
                    return False
    return answer
 

매우 간결하다. find 함수는 발견된 문자열의 인덱스값을 불러온다.

ex) y = "aabc" 일때 y.find("ab") 를 입력하면 "ab"의 인덱스 값인 1출력

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band