@sleepysoong
[프로그래머스][4번째로 푼 문제] 120869. 외계인 사전 (240731) 본문
[프로그래머스][4번째로 푼 문제] 120869. 외계인 사전 (240731)
sleepysoong 2024. 11. 12. 14:02구분
코딩테스트 연습 > 코딩테스트 입문
제출 일자
2024년 07월 31일 16:37:04
문제 설명
PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell
과 외계어 사전 dic
이 매개변수로 주어집니다. spell
에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic
에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution
함수를 완성해주세요.
제한사항
spell
과dic
의 원소는 알파벳 소문자로만 이루어져있습니다.- 2 ≤
spell
의 크기 ≤ 10 spell
의 원소의 길이는 1입니다.- 1 ≤
dic
의 크기 ≤ 10 - 1 ≤
dic
의 원소의 길이 ≤ 10 spell
의 원소를 모두 사용해 단어를 만들어야 합니다.spell
의 원소를 모두 사용해 만들 수 있는 단어는dic
에 두 개 이상 존재하지 않습니다.dic
과spell
모두 중복된 원소를 갖지 않습니다.
입출력 예
spell | dic | result |
---|---|---|
["p", "o", "s"] | ["sod", "eocd", "qixm", "adio", "soo"] | 2 |
["z", "d", "x"] | ["def", "dww", "dzx", "loveaw"] | 1 |
["s", "o", "m", "d"] | ["moos", "dzx", "smm", "sunmmo", "som"] | 2 |
입출력 예 설명
입출력 예 #1
"p", "o", "s"를 조합해 만들 수 있는 단어가 dic
에 존재하지 않습니다. 따라서 2를 return합니다.
입출력 예 #2
"z", "d", "x"를 조합해 만들 수 있는 단어 "dzx"가 dic
에 존재합니다. 따라서 1을 return합니다.
입출력 예 #3
"s", "o", "m", "d"를 조합해 만들 수 있는 단어가 dic
에 존재하지 않습니다. 따라서 2를 return합니다.
유의사항
입출력 예 #3에서 "moos", "smm", "som"도 "s", "o", "m", "d"를 조합해 만들 수 있지만 spell
의 원소를 모두 사용해야 하기 때문에 정답이 아닙니다.
from collections import Counter
def solution(spell, dic):
counter = Counter(spell)
for word in dic:
if Counter(word) == counter:
return 1
return 2
느낀 점
처음에는 spell
로 Permutation을 만들고 만든 거 중에 dic
안에 있는가?로 체크해야 하나 했지만 Counter
로 그냥 간단하게 풀었다..
1학년 1학기 때 배운 프로그래밍 입문에 이거랑 비슷한 문제가 있었던 것 같기도 한데 갑자기 생각하려니까 기억이 안 나서 아쉽
alita
님의 set
를 이용한 간단한 풀이
파이썬 내장함수 issubset
을 이용하여 풀었습니다.
A.issubset(B)
만약 A가 B의 부분 집합이라면 True 반환
아니면, False 반환
def solution(spell, dic):
spell = set(spell)
for i in dic:
if spell.issubset(set(i)):
return 1
return 2
노력형범재, kimdoyoeung, 최예주, kti0940 외 39 명
님의 풀이
def solution(spell, dic):
spell = set(spell)
for s in dic:
if not spell - set(s):
return 1
return 2
두 풀이 다 집합을 사용하여 풀었는데 나는 왜 집합을 생각하지 못했는가.....
zfra, KJstudio1171, hyoie813@gmail.com, 포메 외 186 명
님의 풀이
def solution(spell, dic):
for d in dic:
if sorted(d) == sorted(spell):
return 1
return 2
와우.... 정렬을 생각해서 풀 줄이야 spell은 정렬을 한 번만 했어도 좋았겠긴 하겠다. 근데 이 정도는 나도 했어야 한다고 생각한다.... 많이 아숩아숩
'programming > 잘 하는 언어는 없지만 문제는 풀어보고 싶어!' 카테고리의 다른 글
[프로그래머스][9번째로 푼 문제] 120853. 컨트롤 제트 (240828) (1) | 2024.11.12 |
---|---|
[프로그래머스][8번째로 푼 문제] 12906. 같은 숫자는 싫어 (240809) (1) | 2024.11.12 |
[프로그래머스][7번째로 푼 문제] 120871. 저주의 숫자 3 (240809) (0) | 2024.11.12 |
[프로그래머스][6번째로 푼 문제] 120843. 공 던지기 (240731) (1) | 2024.11.12 |
[프로그래머스][5번째로 푼 문제] 120866. 안전지대 (240731) (1) | 2024.11.12 |