문제풀이/백준(Boj) 문제풀이

[백준][파이썬] - 10816. 숫자 카드 2(파이썬/python)

얄루몬 2022. 7. 20. 02:04

딕셔너리 사용 풀이

from collections import defaultdict


int(input())
num = list(map(int,input().split()))

int(input())
num2 = list(map(int,input().split()))

res = defaultdict(int)

for n in num:
    res[n] += 1

for x in num2:
    if x in res:
        print(res[x], end=" ")
    else:
        print(0, end=" ")
  • defaultdict를 사용한 이유는 for문을 사용할 때 특정 키에 값을 += 1해주는 작업을 위해서다.
    • 이때 그냥 딕셔너리를 쓰게 된다면?
    • if not n in res:
              res[n] = 0
          res[n] += 1
    • 위와 같이 여러줄의 코드를 넣어서 사용해야 한다!
  • defaultdict는 값을 전부 0으로 초기화 해준다!
  • 해당 숫자를 key로 해당 숫자의 갯수를 value로 defaultdict에 담아 준다.
  • num2를 돌며 해당 값이 defaultdict에 있으면 해당 값(= 몇개인지 카운팅 한 수)을 출력해주고 그러히 않으면 0을 출력해준다.

dict를 사용한 풀이

from collections import defaultdict


int(input())
num = list(map(int,input().split()))

int(input())
num2 = list(map(int,input().split()))

res = {}

for n in num:

    if not n in res:
        res[n] = 0
    res[n] += 1

for x in num2:
    if x in res:
        print(res[x], end=" ")
    else:
        print(0, end=" ")

딕셔너리 enumerate

  • 딕셔너리
    • 딕셔너리는 원하는 타입의 키에 값을 넣어 사용하는 방식 a = {}로 선언하거나 a = dict()로 선언한다.
    • 이때 해당하는 키의 값의 체크가 목적이 아닌 누적이 목적이라면 defaultdict 사용을 권한다.
    • 딕셔너리를 반복문에서 사용할 때 key, value 두개로 접근하기 위해서는 딕셔너리명.items()를 사용해야 한다.
  • enumerate
    • 이 경우엔 넣은 리스트의 index를 부여하고 싶을 때 사용한다.

https://adervise1.tistory.com/100

 

[파이썬 기초] 문자열, 리스트, 딕셔너리와 관련된 여러가지 함수

문자열, 리스트, 딕셔너리와 관련된 기본 함수 min(), max(), sum() : 리스트에 적용할 수 있는 기본 함수 min() : 리스트 내부의 최솟값을 찾는다. max() : 리스트 내부의 최댓값을 찾는다. sum() : 리스트

adervise1.tistory.com