[Python]백준_2909 : 캔디 구매

Alal11·2023년 1월 2일
0
post-thumbnail

출처

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


문제

오늘은 화이트데이이다. 상근이는 여자친구를 위해서 사탕을 사려고 한다. 하지만, 상근이는 독특한 성격을 가지고 있어서, 특정 액면가의 지폐만 가지고 있는다. 또, 거스름돈은 받지 않는다. 따라서, 사탕 가게의 사장과 상근이는 다음과 같은 합의를 했다. 상근이는 사장에게 자신이 가지고 있는 지폐의 액면가를 말해준다. 그럼 사장은 상근이가 지불할 수 있는 가장 가까운 금액으로 사탕의 가격을 반올림해준다.

예를 들어, 상근이가 가지고 있는 지폐의 액면가가 100원이라고 하자. 만약 상근이가 고른 사탕의 가격이 150원이라면, 사장은 가격을 200원으로 반올림해서 상근이가 낼 수 있도록 해준다. 또, 가격이 149원이라면, 사장은 가격을 100원으로 반올림해서 상근이가 지불할 수 있도록 해준다.

상근이가 가지고 있는 지폐의 액면가는 항상 1, 10, 100, 1000, ..., 1,000,000,000 중 하나이다. 또, 지폐를 무한개 가지고 있다.

사탕 가격과 상근이가 가지고 있는 지폐의 액면가가 주어졌을 때, 사장은 가격을 얼마로 바꿔줄 것인지 구하는 프로그램을 작성하시오.


입력

첫째 줄에 사탕의 가격 C와 상근이가 가지고 있는 지폐의 액면가에 적혀있는 0의 개수 K가 주어진다. (0 ≤ C ≤ 1,000,000,000, 0 ≤ K ≤ 9)


출력

첫째 줄에 상근이가 내야하는 가격을 출력한다.


예제 입출력


알고리즘 분류

  • 수학
  • 구현

➡️문제 분석

일반적으로는 5이상이면 올림, 4이하면 내림하는 사사오입 방식이지만
파이썬에서는 5보다 크면 올리고, 5보다 작으면 내리는 오사오입 방식을 사용한다.
5일 경우, 앞자리가 홀수면 올림, 짝수면 내림한다.


➡️코드(⭕)

c, k = map(int, input().split())

print(int(round(c+0.1, -k)))

# round(num, k) 함수 : num을 소수점 k자리까지 반올림한 값을 리턴한다.
# round(num, -k) : num을 10의 k제곱까지 반올림한 값을 리턴

➡️코드 분석

  1. 사탕의 가격 c와 액면가의 0의 개수 k를 입력받는다.

  2. c를 10의 k제곱 자리까지 반올림한 값을 출력해주는데,
    5일 때에도 올림 처리를 해주기 위해 c에 0.1만큼 더한 후 반올림 연산을 해준 다음 int형으로 소수점을 제거해주고 출력한다.


➡️end

문제 길이에 비해 내용은 쉬운 문제였다. 파이썬이 오사오입 방식을 사용하는 것을 알게 되었다!

0개의 댓글