Skip to content

8-jiseob - #42

Merged
flydongwoo merged 2 commits into
mainfrom
8-jiseob
Jul 21, 2025
Merged

8-jiseob#42
flydongwoo merged 2 commits into
mainfrom
8-jiseob

Conversation

@seobeeeee1001

Copy link
Copy Markdown
Collaborator

πŸ”— 문제 링크

https://www.acmicpc.net/problem/11047

βœ”οΈ μ†Œμš”λœ μ‹œκ°„

10λΆ„

✨ μˆ˜λ„ μ½”λ“œ

DP μ ‘κ·Ό

μ²˜μŒμ—” DPλ‘œλ„ ν’€ 수 μžˆκ² λ‹€ μ‹Άμ–΄μ„œ

점화식을 d[i] = min ( d[i-A1] , d[i-A2] , ... , d[i-AN] ) + 1 κ³Ό 같이 μ„Έμ›Œλ΄€μŠ΅λ‹ˆλ‹€.

그런데 K κ°€ 1얡이라 NKκ°€ 10얡이 λΌμ„œ μ‹œκ°„μ΄ˆκ³Όκ°€ λ°œμƒν•©λ‹ˆλ‹€.

그리디 μ ‘κ·Ό

κ·Έ λ‹€μŒμœΌλ‘œ 생각할 수 μžˆλŠ”κ±΄ κ·Έλ¦¬λ””μž…λ‹ˆλ‹€.

μ§κ΄€μ μœΌλ‘œ κ°€μΉ˜κ°€ 큰 동전 μˆœμ„œλŒ€λ‘œ μ΅œλŒ€ν•œμœΌλ‘œ μ“°λ©΄ μ‚¬μš©ν•˜λŠ” λ™μ „μ˜ κ°œμˆ˜κ°€ μ΅œμ†Œκ°€ λ©λ‹ˆλ‹€.

κ·Έλ ‡μ§€λ§Œ κ·Έλ¦¬λ””λŠ” μ—°μŠ΅ν•  λ•ŒλŠ” κ°„λ‹¨ν•œ 증λͺ…이라도 ν•˜λŠ”κ²Œ λ‚˜μ€‘μ— μ‹€μ „μ—μ„œ μ’‹λ‹€κ³ ν•΄μ„œ ν•œλ²ˆ ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

10원 50원 100원 500원이 μžˆλ‹€κ³  ν–ˆμ„ λ•Œ,

λͺ…μ œ : 500원을 μ΅œλŒ€ν•œμœΌλ‘œ 많이 μ¨μ•Όν•œλ‹€.

λͺ…μ œλ₯Ό 증λͺ…ν•˜κΈ° 전에 보쑰정리λ₯Ό 증λͺ…ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

보쑰 정리 :

10원/100원은 4개 μ΄ν•˜λ‘œ μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€

50원은 1개 μ΄ν•˜λ‘œ μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

κ·€λ₯˜λ²•μœΌλ‘œ 10원, 100원을 5개 μ΄μƒμœΌλ‘œ μ“΄λ‹€λ©΄

50μ›μ΄λ‚˜ 500μ›μœΌλ‘œ λŒ€μ²΄κ°€λŠ₯ν•©λ‹ˆλ‹€.

50원도 2개 이상 μ“°λ©΄ 100μ›μœΌλ‘œ λŒ€μ²΄κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ 보쑰 정리λ₯Ό 따라야 κ°œμˆ˜κ°€ μ΅œμ ν™”λœλ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

보쑰 정리λ₯Ό ν†΅ν•΄μ„œ μš°λ¦¬λŠ” 10원/50원/100μ›μœΌλ‘œ μ΅œλŒ€ν•œ λ§Œλ“€ 수 μžˆλŠ” μ•‘μˆ˜κ°€ 490원인 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

즉, 500원을 κ°λ‹Ήν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— 500원을 μ΅œλŒ€ν•œ 많이 μ‚¬μš©ν•΄μ•Όλ―€λ‘œ λͺ…μ œκ°€ 증λͺ…이 λ©λ‹ˆλ‹€.

100원, 50원, 10원에도 λ§ˆμ°¬κ°€μ§€μ˜ 논리λ₯Ό μ μš©ν•  수 μžˆμœΌλ―€λ‘œ μ°¨λ‘€λŒ€λ‘œ μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

일반적인 μƒν™©μ—μ„œλ„ 증λͺ…이 λ˜λƒ 의문이 λ“ λ‹€λ©΄

λ¬Έμ œμ—μ„œ 배수 관계가 μžˆλ‹€λŠ” 쑰건이 μžˆμœΌλ―€λ‘œ λŒ€μ²΄ κ°€λŠ₯μ„±, μ–΄λ–€ μˆ«μžλ³΄λ‹€ μž‘μ€ 배수 관계 μˆ«μžλ“€μ˜ 합이 κ·Έ 수 보닀 μž‘λ‹€λŠ” 것을 ν™•μΈν•œλ‹€λ©΄ 의문이 풀리싀 κ²λ‹ˆλ‹€. (예λ₯Ό λ“€μ–΄ 1,2,4,8,16 μ—μ„œλŠ” 8κΉŒμ§€ 더해도 15κ°€ λ©λ‹ˆλ‹€.)

πŸ“š μƒˆλ‘­κ²Œ μ•Œκ²Œλœ λ‚΄μš©

@Seol-Munhyeok Seol-Munhyeok left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

λ™μ „μ˜ 개수λ₯Ό μ΅œμ†Œν™”ν•˜λΌλŠ” μœ ν˜•μ€ 'νšŒμ˜μ‹€ λ°°μ •' 문제 ( https://www.acmicpc.net/problem/1931 ) 와 λ”λΆˆμ–΄μ„œ λŒ€ν‘œμ μΈ 그리디 μ•Œκ³ λ¦¬μ¦˜ 문제 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.
동전 λ¬Έμ œκ°€ 그리디 μ•Œκ³ λ¦¬μ¦˜μ΄ 졜적이 되렀면 λ°˜λ“œμ‹œ λ™μ „κ°„μ˜ 관계가 배수 관계일 λ•Œλ§Œ μ„±λ¦½ν•©λ‹ˆλ‹€. μ΄λŠ” μ§€μ„­λ‹˜μ΄ 증λͺ…ν•΄μ£Όμ…¨λŠ”λ° 증λͺ…μ˜ 핡심은 500원 두 개λ₯Ό μ£ΌλŠ” 게 졜적이라 κ°€μ •ν•˜λ©΄, 1000원 ν•œ 개 μ£ΌλŠ” 방법이 졜적이 λ˜κΈ°λ•Œλ¬Έμ— μ•žμ˜ 가정에 λͺ¨μˆœλ˜λ―€λ‘œ λ°˜λ“œμ‹œ κ°€μΉ˜κ°€ 큰 것뢀터 λ‚˜λˆ„μ–΄μ£ΌλŠ” 것이 졜적이 λ©λ‹ˆλ‹€.

n, k = map(int, input().split())
coins = [int(input()) for _ in range(n)]
answer = 0

# κ°€μž₯ 큰 κ°€μΉ˜μ˜ 동전뢀터 탐색
for i in range(n-1, -1, -1):
    if k == 0:
        break
    coin = coins[i]
    answer += k // coin
    k %= coin

print(answer)

κ·ΈλŸ¬λ‚˜ λ™μ „κ°„μ˜ 관계가 λ°°μˆ˜κ΄€κ³„κ°€ μ•„λ‹Œ 경우 κ·Έλ¦¬λ””λŠ” μ„±λ¦½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
κ°„λ‹¨ν•œ λ°˜λ‘€λ‘œ 동전이 1, 10, 11 μ΄λ ‡κ²Œ 있고 20원을 μ€˜μ•Όν•˜λŠ” 상황을 κ°€μ •ν•΄λ΄…μ‹œλ‹€.
κ·Έλ¦¬λ””ν•œ μ ‘κ·ΌμœΌλ‘œλŠ” 11원 1κ°œμ™€ 1원 9개둜 총 10개의 동전이 ν•„μš”ν•˜μ§€λ§Œ μ‹€μ œλ‘œλŠ” 10원 동전 2개λ₯Ό μ£ΌλŠ” 것이 λ‹΅μ΄λ©λ‹ˆλ‹€.

이 처럼 λ™μ „κ°„μ˜ 관계가 λ°°μˆ˜κ΄€κ³„κ°€ 아닐 λ•ŒλŠ” μ§€μ„­ λ‹˜μ΄ 처음 μ ‘κ·Όν•œ DP μ ‘κ·ΌμœΌλ‘œ ν’€ 수 μžˆμŠ΅λ‹ˆλ‹€.
동전 1 ( https://www.acmicpc.net/problem/2293 ) λ¬Έμ œκ°€ λ”± κ·ΈλŸ¬ν•œ λ¬Έμ œμ΄λ‹ˆ ν•œ 번 ν’€μ–΄λ³΄μ‹œλ©΄ 쒋을 κ±° κ°™μŠ΅λ‹ˆλ‹€.

@flydongwoo
flydongwoo merged commit 4205d25 into main Jul 21, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants