본문 바로가기
Python

[Python, hash] map, BOJ 1920번 수 찾기 문제 풀이

by matters_ 2020. 1. 5.

python의 map 함수란?

  • map(function, iterable, ...)
  • 첫번째 인자로 함수의 이름이 들어온다.
  • 두번째 인자로 iterable한 데이터(ex list, dictionary)가 위치한다.
  • 즉 두번째 인자를 하나씩 첫번째 함수의 인자로 넣어 list 형태로 반환하는 함수이다.
  • hash 개념을 구현한 함수이다.

BOJ 1920번 수 찾기 문제풀이

위 문제의 의도는 원래 이분탐색을 통해 풀이하는 것이 정해이지만

파이썬의 map함수를 이용하여 hash 개념으로도 풀 수 있다.

 

N, A = int(input()), {i: 1 for i in map(int, input().split())}
M = input()
for i in map(int, input().split()):
    print(A.get(i, 0))

위 문제에서는 파이썬 내장함수인 int 함수를 써서 string을 int로 변환하고 반복문을 이용해 입력과 동시에 출력한 것이 핵심이다. 

 

print(A[i])

4번째 줄에 위와 같이 사용할 수도 있다고 생각할 수도 있으나 map에 정의되지 않은 key가 들어 올 때 오류를 발생시킨다.

 

print(A.get(i, 0))

따라서 다음과 같이 get함수를 써서 첫번째 인자로 주어진 값이 map 데이터에 없다면 default 출력 값으로 출력되게 두번째 인자에 그 값을 출력할 수 있다. 자세한 사항은 아래 reference를 참고하자.

Reference

 

Python Dictionary get() Method

Python Dictionary get() Method ❮ Dictionary Methods Example Get the value of the "model" item: car = {   "brand": "Ford",   "model": "Mustang",   "year": 1964 } x = car.get("model") print(x) Run example » Definition and Usage The get() method returns the v

www.w3schools.com

 

댓글