Python/백준 (BOJ)

[BOJ][B2]캔디 구매- 2909

ㅋㅋ! 2025. 9. 14. 13:00

 

https://www.acmicpc.net/status?user_id=idleh&problem_id=2909&from_mine=1

문제 전문은 링크 참조

문제가공

입력된 숫자 C를 입력된 숫자K의 자리수에서 반올림 하여 출력하자.

주의할 점

언뜻 보면 **round(C,-K)**로 간단하게 해결될 것 같지만, 파이썬의 round 함수는 round half even 방식으로 적용된다.

 

❕ Round half even?

      반올림에 해당되는 수가 절반(5)인 경우, 앞자리 수가 짝수가 되도록 처리함.

 

위 내용을 참고하여 아래처럼 추가적인 규칙이 필요함.

  1. 반올림 자리의 수가 5인 경우 Round half even을 피하기 위해 1을 더해 줌.
  2. 1번 규칙을 위해 자리수를 파악할 때 C의자리수는 K보다 크거나 같아야함.

코드작성

c,k = map(int,input().split())
if k ==0: print(c)
else :
    if len(c)>= k and  str(c)[-k] =='5':
        c += 1*(10)**(k-1)

    print(round(c,-k))

'Python > 백준 (BOJ)' 카테고리의 다른 글

[BOJ][B2]창영이의 일기장 - 2954  (0) 2025.09.16
[BOJ][B2]2009년 - 2948  (0) 2025.09.15
[BOJ][B2]KMP는 왜 KMP일까? - 2902  (0) 2025.09.13
[BOJ][B2]5와 6의 차이 - 2864  (0) 2025.09.12
[BOJ][B2]기숙사 바닥 - 2858  (0) 2025.09.11