BAEKJOON 11047 동전 0

μƒν›ˆΒ·2022λ…„ 5μ›” 13일
0

🏸문제


πŸ’Šν’€μ΄

λ‚˜λˆ„κΈ° ν›„ λͺ«κ°€ λ‚˜λ¨Έμ§€λ₯Ό 이용

  1. 동전이 주어진 μˆ˜λ³΄λ‹€ 큰지 μž‘μ€μ§€ νŒŒμ•…
  2. 주어진 μˆ˜λ³΄λ‹€ κ°™κ±°λ‚˜ μž‘μ„ λ•Œλ§Œ 배열에 λ’€μ—μ„œλΆ€ν„° 채움(λ‚˜μ€‘μ— λ“€μ–΄μ˜¨ μˆ˜κ°€ μ•žμœΌλ‘œ 배치)
  3. 배열을 μˆœνšŒν•˜λ©° ν•΄λ‹Ή λ™μ „μœΌλ‘œ 주어진 수λ₯Ό λ‚˜λˆˆλ‹€
  4. λ‚˜λˆˆ λͺ«μ΄ ν•΄λ‹Ή 동전을 λ‚΄μ•Όν•˜λŠ” 개수
  5. λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 남은 λ™μ „μœΌλ‘œ λ‚΄μ•Όν•˜λŠ” 돈
  6. λͺ¨λ“  순휘λ₯Ό 끝내고 동전을 λ‚΄μ•Όν•˜λŠ” 총 개수λ₯Ό λ”ν•΄μ€Œ

πŸ“Œμ½”λ“œ

import sys
sys.stdin = open('input.txt')

N, M = map(int,input().split())

arr = []
for _ in range(N):
    value = int(sys.stdin.readline().rstrip())
    if M >= value:                              # λ™μ „μ˜ 값이 M보닀 κ°™κ±°λ‚˜ μž‘μœΌλ©΄ 배열에 λ‹΄κΈ°
        arr = [value] + arr                     # 큰 동전이 μ•žμœΌλ‘œ μ˜€λ„λ‘ 배열을 λ’€μ§‘μ–΄μ„œ λ°›μ•„μ€€λ‹€.

cnt = 0
for i in arr:                                   # 배열을 순회
    cnt += M//i                                 # λ™μ „μœΌλ‘œ λ‚˜λˆˆ λͺ«μ΄ ν•΄λ‹Ή 동전을 λ‚΄λŠ” 수
    M %= i                                      # λ™μ „μœΌλ‘œ λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 남은 λ™μ „λ“€λ‘œ λ‚΄μ•Όλ˜λŠ” 남은 κ°’
print(cnt)                                      # λͺ¨λ“  동전을 λ‚΄λŠ” 수λ₯Ό λ”ν•΄μ„œ 좜λ ₯

πŸ›€κ²°κ³Ό

μ²˜μŒμ—λŠ” dfsλ₯Ό μ΄μš©ν•΄μ„œ ν’€μ–΄λ³ΌκΉŒ μƒκ°ν–ˆλ‹€. ν•˜μ§€λ§Œ μž‘μ€ μˆ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ dfsλ₯Ό λ„ˆλ¬΄ 많이 λŒμ•„μ„œ μ‹€νŒ¨ν–ˆλŠ”λ° μ§€κΈˆ μƒκ°ν•΄λ³΄λ‹ˆ 배열을 λ’€μ§‘μ–΄μ„œ dfs 탐색을 μ‹œμž‘ν•˜κ³  처음으둜 λ™μ „μ˜ κ°’κ³Ό λ™μΌν•˜κ²Œ 완성됐을 λ•Œ λ°”λ‘œ μ’…λ£Œ μ‹œμΌœλ²„λ¦°λ‹€λ©΄ κ°€λŠ₯ν•  것 같기도 ν•˜λ‹€. ν•˜μ§€λ§Œ μ§€κΈˆ 풀이가 훨씬 더 κ°„κ²°ν•˜κ³  κΉ”λ”ν•˜κ²Œ 풀어진 것 κ°™μ•„μ„œ μ•„μ£Όμ•„μ£Ό λ§Œμ‘±μŠ€λŸ½λ‹€ γ…Žγ…Ž! (μž˜ν–ˆμ₯¬~)

profile
문솑 개발자

0개의 λŒ“κΈ€