고양이와 코딩

[프로그래머스] 외계어 사전.py 본문

python

[프로그래머스] 외계어 사전.py

ovovvvvv 2023. 7. 27. 23:39
728x90

문제



def solution(spell, dic):
    answer = "".join(spell)
    
    for word in dic:
        if answer in word:
            return 1
        else:
            return 2

❌  일단 생각나는대로 후루룩 짠 코드.

오답!! (당연함) 3개의 테스트 케이스 중 두 개만 통과했다.

 

문제는 더 이상 머리가 굴러가지 않았고.. 이중 for문은 정말로 이제는 그만 써야할 것 같았기에..
파이썬 문자열 문자 중복 어쩌구 검색을 통해서 set함수를 써야겠다!! 까지 도달했다 ㅎㅎ

def solution(spell, dic):
    set_spell = set(spell)
    
    for word in dic:
        if set_spell.issubset(set(word)):
            return 1
    return 2

 

* set 함수: 중복을 허용하지 않는 원소들로 이루어진 컬렉션을 생성하는 역할. 중복된 원소를 제거하여 고유한 원소들만 남긴다.

* issubset 함수: 집합(set)간의 관계를 확인하는 메서드 중 하나로, 첫 번째 집합이 두 번째 집합의 부분집합인지를 판단한다.

그래서 spell을 먼저 중복을 제거한 상태로 만들어 주고 dic을 돌면서 set_spell이 set(word)의 부분 집합인지를 확인한다.
맞다면 1 , 아니면 2!

 

파이썬의 유용한 함수들을 잘 기억해 두어야겠다.