
<문제>
https://www.acmicpc.net/problem/32978
<풀이>
import sys
input = sys.stdin.read().splitlines()
def solve(input):
L = int(input[0])
m_list = input[1].split()
c_list = input[2].split()
m_dict = { m : 1 for m in m_list }
for c in c_list:
if c in m_dict:
del m_dict[c]
forgot = list(m_dict.keys())
return forgot[0]
print(solve(input))
- 저번에 해시테이블을 이용해서 빠르게 조회/삭제한게 기억나서 사용
- 키만 필요하니까 딕셔너리에 준비물을 키로 저장해놓고 (값은 1로 통일)
- 쓴 재료들을 순회하면서 key로 찾고 딕셔너리에서 삭제
- 하나 남은 key를 list로 만들고 반환
그런데 set을 이용한 다른 풀이가 더 나은 것 같다.
N = int(input())
A = input().split()
U = input().split()
all_set = set(A)
used_set = set(U)
miss = all_set - used_set
print(miss.pop())
- set으로 만들고 차집합으로 바로 남은 것을 찾음
'TIL > [파이썬] 1일 1코테' 카테고리의 다른 글
| 회상_백준32953 (0) | 2025.01.24 |
|---|---|
| 전주 듣고 노래 맞히기_백준31562 (0) | 2025.01.23 |
| Hashing_백준15829 (0) | 2025.01.22 |
| 할리갈리_백준27160 (0) | 2025.01.20 |
| 전화번호 목록_프로그래머스 (0) | 2025.01.20 |