BOJ - 11047번 동전 0 (Python)

woga·2020년 11월 2일
0

BOJ

목록 보기
61/83
post-thumbnail

문제 출처: https://www.acmicpc.net/problem/11047

문제 난이도

Silver 1


문제 접근법

이거 그리디 아닌가? 하면서 쉽게 접근했다 ㅋㅋㅋㅋ 그냥 k값대로 나누고 몫을 더해주고 그만큼 k에 뺴면 된다. 대신 최소값이기 때문에 뒤에서부터 시작해야한다.
이 문제 덕분에 파이썬 거꾸로 for 문 돌리는 법과 사칙연산자를 익혔다..


통과 코드

N, k = map(int, input().split())
arr = []
for i in range(N):
    arr.append(int(input()))
num = 0
for i in range(N-1, -1, -1):
    if k == 0:
        break
    if arr[i] > k:
        continue
    num += (k//arr[i])
    k %= arr[i]

print(num)

etc

C++에서는 소수점 나오게 하려면 데이터 타입명을 신경써야하는데 파이썬은 오히려 기본이 소수점까지 계산이다. 그래서 처음에는 그냥 / 나누기 연산 후 int형 씌우는 것으로 해결했는데 예제 2번에서 값이 안나오길래 검색했다

그러다 // 새로운 연산자를 보게 됐고, 정수 몫만 나오게 하는 연산자가 따로 있음을 알았다.. 신기한.. 파이썬..

profile
와니와니와니와니 당근당근

0개의 댓글