본문 바로가기
프로그래머스/프로그래머스 Lv0

Lv0 외계어 사전

by 독기품기 2024. 7. 17.

https://school.programmers.co.kr/learn/courses/30/lessons/120869

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 주어진 spell 배열의 원소의 문자들을 모두 사용한 문자열이 있는지 판단 해야 하는 문제이다.

보통 생각한다면 if i not in 배열 이런 식으로 for문과 이용하여 푸는 방법을 많이 생각할텐데 이 문제는 그렇게 풀면 답이 안 나와서 다른 방식으로 접근하게 되었다.

먼저 파이썬에는 집합이 있는데 집합이 존재하므로 집합 연산 또한 존재한다. 그래서 차집합을 이용해서 풀게 되면

for i in dic으로 주어진 문자열을 하나하나 뽑아오고 if not set(spell) - set(i)를 통해 차집합을 표현했는데 차집합은 공통 원소를 제거하는 연산이기에 만약 집합으로 형변환한 spell, set이 같은 원소만 가지고 있다면 0이 되고 if 문에서 0은 False를 나타내 실행이 안 되므로 앞에 not을 붙여줘서 if 문이 True로 실행되게 한 후에 answer = 1을 넣어준 후 문제를 해결하면 된다.