λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜ 문제 풀이/Greedy

[μ΄μ½”ν…Œ] 1이 될 λ•ŒκΉŒμ§€

by syLim___ 2023. 2. 22.
728x90

좜처: 이것이 취업을 μœ„ν•œ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€(λ‚˜λ™λΉˆ)

https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2

 

[문제]

  • μ–΄λ– ν•œ 수  N이 1이 될 λ•ŒκΉŒμ§€ λ‹€μŒμ˜ 두 κ³Όμ • 쀑 ν•˜λ‚˜λ₯Ό 반볡적으둜 μ„ νƒν•˜μ—¬ μˆ˜ν–‰ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 단, 두 번째 연산은 N이 K둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§ˆ λ•Œλ§Œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.
    1. Nμ—μ„œ 1을 λΊλ‹ˆλ‹€.
    2. N을 K둜 λ‚˜λˆ•λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄ N이 17, Kκ°€ 4라고 κ°€μ •ν•©μ‹œλ‹€. μ΄λ•Œ 1번의 과정을 ν•œ 번 μˆ˜ν–‰ν•˜λ©΄ N은 16이 λ©λ‹ˆλ‹€. 이후에 2번의 과정을 두 번 μˆ˜ν–‰ν•˜λ©΄ N은 1이 λ©λ‹ˆλ‹€. 결과적으둜 이 경우 전체 과정을 μ‹€ν–‰ν•œ νšŸμˆ˜λŠ” 3이 λ©λ‹ˆλ‹€. μ΄λŠ” N을 1둜 λ§Œλ“œλŠ” μ΅œμ†Œ νšŸμˆ˜μž…λ‹ˆλ‹€.
  • Nκ³Ό Kκ°€ μ£Όμ–΄μ§ˆ λ•Œ N이 1이 될 λ•ŒκΉŒμ§€ 1번 ν˜Ήμ€ 2번의 과정을 μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” μ΅œμ†Œ 횟수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

[문제 쑰건]

  • 풀이 μ‹œκ°„: 15λΆ„
  • μ‹œκ°„ μ œν•œ: 2초
  • λ©”λͺ¨λ¦¬ μ œν•œ: 128MB
  • μž…λ ₯ 쑰건: 첫재 쀄에 N(1<=N<=100000)κ³Ό K(2<=K<=1000000)κ°€ 곡백을 κΈ°μ€€μœΌλ‘œ ν•˜μ—¬ 각각 μžμ—°μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
  • 좜λ ₯ 쑰건: 첫째 쀄에 N이 1이 될 λ•ŒκΉŒμ§€ 1번 ν˜Ήμ€ 2번의 과정을 μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•©λ‹ˆλ‹€.

아이디어

 -λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λŠ” κ²½μš°μ—λŠ” λ‚˜λˆ„κ³ , κ·Έλ ‡μ§€ μ•Šμ€ κ²½μš°λŠ” 1을 λΊ€λ‹€ -> 그리디 μ•Œκ³ λ¦¬μ¦˜

λ‚΄κ°€ λ– μ˜¬λ¦° μ•„μ΄λ””μ–΄μ˜ μ •λ‹Ήμ„± κ²€ν† 

 -K둜 ν•œ 번 λ‚˜λˆ„λŠ” 상황: μ—°μ‚°νšŸμˆ˜λŠ” 1회

 -1μ”© K번 λΉΌλŠ” 상황: μ—°μ‚°νšŸμˆ˜λŠ” K회

 -λ‚˜λˆ„κΈ°λ₯Ό ν•  수 μžˆλŠ” μƒν™©μ—μ„œλŠ” 무쑰건 ν•΄μ•Ό μ—°μ‚°νšŸμˆ˜κ°€ κ°€μž₯ 적어진닀.

 

 -μ±… λ‚΄μš© μΆ”κ°€:

     N이 아무리 큰 μˆ˜μ—¬λ„ 2 μ΄μƒμ˜ K둜 λ‚˜λˆ„κΈ°λ§Œ ν•œλ‹€λ©΄ 1둜 λΉΌλŠ” 것보닀 κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ λΉ λ₯΄κ²Œ N을 쀄일 수 μžˆλ‹€.

     λ¬Έμ œμ— Kκ°€ 2 μ΄μƒμ΄λΌλŠ” 쑰건이 μžˆλ‹€!

 

μž‘μ„± μ½”λ“œ

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

cnt = 0

while True:
  if N==1:
    break
  if N%K==0:
    N /= K
  else:
    N -= 1
  cnt += 1

print(cnt)

κ°•μ˜μ— λ‚˜μ˜¨ μ˜ˆμ‹œ μ½”λ“œλŠ” 이렇닀!

 

ν˜„μž¬ 문제 μ‘°κ±΄μ—μ„œλŠ”  Nκ³Ό Kκ°€ 10만 μ΄ν•˜μ˜ μž‘μ€ μ •μˆ˜μ΄κΈ° λ•Œλ¬Έμ—

λ‚΄κ°€ ν•œ κ²ƒμ²˜λŸΌ 맀번 N의 값을 μ²΄ν¬ν•˜λ©΄μ„œ μ—°μ‚° 횟수λ₯Ό μΉ΄μš΄νŠΈν•΄λ„ 크게 λ¬Έμ œλ˜μ§€λŠ” μ•Šμ§€λ§Œ,

μˆ«μžκ°€ 맀우맀우 컀질 κ²½μš°μ—λŠ” μ €λ ‡κ²Œ N으둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λŠ” μˆ«μžκ°€ 될 λ•ŒκΉŒμ§€ 1μ”© λͺ‡ 번 λΉΌμ•Όν•˜λŠ”μ§€ κ³„μ‚°ν•˜μ—¬ κ΅¬ν•˜λŠ” 방식을 μ‚¬μš©ν•˜λ©΄ λΆˆν•„μš”ν•œ μ—°μ‚° 반볡 νšŸμˆ˜κ°€ ν™• μ€„μ–΄λ“€κ²Œ λœλ‹€(μ‹œκ°„λ³΅μž‘λ„κ°€ λ‘œκ·Έμ‹œκ°„μ΄ 됨)

728x90