알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[단어 찾기(딕셔너리 해쉬)]
현수는 영어로 시를 쓰는 것을 좋아한다.
현수는 시를 쓰기 전에 시에 쓰일 단어를 미리 노트에 적어둔다. 이번에는 N개의 단어를 노트에 적었는데 시에 쓰지 않은 단어가 하나 있다고 한다. 시에 쓰이지 않는 단어를 찾는 프로그램을 작성하시오.
*입력 설명
첫 번째 줄에 자연수 N(3 ≤ N ≤ 100)이 주어진다.
두 번째 줄부터 노트에 미리 적어놓은 N개의 단어가 주어지고, 이어서 바로 다음 줄부터 시에 쓰인 N-1개의 단어가 주어진다.
*출력 설명
첫 번째 줄에 시에 쓰지 않은 한 개의 단어를 출력한다.
풀이(Python)
답안
import sys
sys.stdin = open('AA/input_39.txt', 'rt')
n = int(input())
p = dict()
for i in range(n):
word = input()
p[word] = p.get(word, 0)+1
for i in range(n-1):
word = input()
p[word] = p.get(word, 0)-1
for key, val in p.items():
if val == 1:
print(key)
break
# 출력 : blue
input_39.txt(입력)
5
big
good
sky
blue
mouse
sky
good
mouse
big
중요내용
- 위의 문제를 해결하는 방법 중 하나는 딕셔너리 자료형을 사용하는 것이다.
- 딕셔너리의 get() 함수를 사용해서, word라는 키 값으로 매칭되는 벨류를 가져올 수 있다.
- 참고로, get() 함수의 두 번째 인자는 해당 딕셔너리 안에 매칭되는 키가 없을 경우 반환되는 값을 의미한다. (두 번째 인자를 설정하지 않으면 디폴트 값으로 None 값이 반환됨 : 에러 발생X)
'알고리즘' 카테고리의 다른 글
Algorithm - 아나그램(리스트 해쉬) (0) | 2021.12.07 |
---|---|
Algorithm - 아나그램(딕셔너리 해쉬) (0) | 2021.12.07 |
Algorithm - 교육과정 설계(큐) (0) | 2021.12.06 |
Algorithm - 응급실(큐) (0) | 2021.12.06 |
Algorithm - 공주 구하기(큐) (0) | 2021.12.05 |
댓글