해시테이블을 이용하는 기초 문제
나는야 포켓몬 마스터 이다솜 (1620) [실버 IV]
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
poketdex_name_id = {}
poketdex_id_name = {}
for i in range(N):
name = input().rstrip()
poketdex_name_id[name] = i + 1
poketdex_id_name[i + 1] = name
for i in range(M):
question = input().rstrip()
if question.isnumeric():
print(poketdex_id_name[int(question)])
else:
print(poketdex_name_id[question])
- 위의 코드처럼
input
함수를 오버라이딩하지 않으면 시간 초과 오류가 발생한다.
- 해시 테이블을 번호-이름 / 이름-번호 총 2가지로 만들어 입력에 따라 다른 테이블을 사용하게끔 했다.

패션왕 신해빈(9375) [실버 III]
from collections import defaultdict
import math
import sys
input = sys.stdin.readline
T = int(input())
for testcase in range(T):
n = int(input())
closet = defaultdict(int)
for _ in range(n):
_, category = map(str, input().split())
closet[category] += 1
answer = math.prod(value + 1 for _, value in closet.items()) - 1
print(answer)
- 해시 테이블을 제작하는 데 각각이 어떤 의상인지는 몰라도 된다. 개수만 기록한 테이블을 제작한다.
math.prod
는 리스트 내 모든 원소들을 곱해주는 메소드이다. 전체를 곱하고 -1 을 해주면 답이다.
