Breaking

2019년 10월 1일 화요일

Baekjoon 11047번 동전 0

Baekjoon 11047번 동전 0 




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

알고리즘 분류 : 13. 그리디 알고리즘

단순히 입력 2개 받아서 N만큼의 종류만큼 다시 input() 또 입력 받고
큰 단위의 숫자 즉 마지막에 입력받은 것부터 차례대로 나누고 숫자세고를 반복한다.

나는 속도 측면에서 56ms를 받았지만 지나치게 길게 작성한 관계로 233B만큼의 길이이다.
N, K = map(int, input().split())
val = []
for i in range(N):
    val.append(int(input()))
count = 0
sumVal = K
for i in reversed(val):
    if sumVal <= 0:
        break
    count += sumVal // i
    sumVal = sumVal % i
print(count)

다른 사람의 결과물 보기
숏코딩 - leemir143 - 98B 56ms

n,k=map(int,input().split());c=0
for i in reversed(eval("int(input()),"*n)):c+=k//i;k=k%i
print(c)

1. 나와의 차이점이라고 한다면 나는 K를 바로 사용한 것이 아니라 sumVal을 따로 받아서 사용했다는 점 그러나 이분은 그렇지 않다는 점
2. eval을 통해 바로바로 입력을 받도록 짠 반면 나는 for 문을 돌려 입력받았다는 점이다.

짧은 것이 마냥 좋은 것은 아니지만 그런게 있다 정도로 넘어가자!