<문제>

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

+ Recent posts