알고리즘 & 코딩테스트

[백준] 11047번 동전 0

Haksae 2022. 3. 19. 05:47

⛏ 문제 파악

  • N 종류의 동전이 주어지고, K라는 값이 주어짐
  • 주어진 동전의 종류의 최소한의 갯수로 K라는 값을 만드는 문제 

 👉🏻  답안

- 패스한 답안

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

need = 0
coins = []

for _ in range(N):
  coin_type = int(input())
  coins.append(coin_type)

coins.reverse()

for coin in coins:
  if K == 0:
    break
  need += K // coin
  K %= coin

print(need)

- 시간 초과 뜬 답안

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

need = 0
coins = []

for _ in range(N):
  coin_type = int(input())
  coins.append(coin_type)

coins.reverse()

for coin in coins:
  if coin > K:
    continue
  else:
    while coin <= K:
      K -= coin
      need += 1

print(need)

📑  간단한 설명

  • 원래 아래 것으로 답안을 제출했는데 시간초과가 나서 위에 답안으로 제출했다.
  • 주어진 동전의 종류를 reverse() 했다. 큰 것부터 나누기 위함
  • need += K // coin   : //은 나머지를 제외하고 몫만 알려줌
  • K %= coin :  K % coin 하면 나머지만 나옴. 나머지를 넣어서 계속 for문 돌림