-
Notifications
You must be signed in to change notification settings - Fork 3
/
02_29_dohyeon.py
46 lines (34 loc) · 1.64 KB
/
02_29_dohyeon.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
'''
생각 흐름 정리
나누기 문제 1075, 나누기 문제
이 문제는 문제를 이해하는게 더 어려웠던 문제였다
첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.
n , f로 주어지는걸 일단 받고 생각하는 걸로 시작
정수 N의 가장 뒤 두 자리를 적절히 바꿔서 N을 F로 나누어 떨어지게 만들려고 한다. 만약 가능한 것이 여러 가지이면, 뒤 두 자리를 가능하면 작게 만들려고 한다. <<
뒷자리 두개가 적절히 바뀐다 ==> 뒷자리 두자리가 바뀌는 건 신경안써도 된다 즉 뒷자리 두자리는 쓸모가 없다
그렇기에 저는 re_n으로 뒷자리 두자리를 제거하고 시작함 -> ~~~00
ex)
n = 2012 -> re_n = 2000
그리고 re_n을 기준으로 trial and error를 통해
답변에 대해 수식적으로 풀었다
그래서 나온 결과가 (몫 * - re_n) + f 일때라는걸 알게되었는데
이때 문제가 생겼다
딱 떨어지는 경우 즉 ()에 있는 값이 0일때나 100처럼 00으로 나타내야만 할때에는
오히려 f를 도출하게 되는 문제가 생기는걸 보았다.
이를 해결하기위해 if 문으로 분기를 하고
진행하였다.
앞에 0 붙이는건 본 코드에서 보듯이 저렇게 str 형태로 만들어서 처리해줬다.
'''
# %%
n = int(input())
f = int(input())
re_n = n - n%100
result = (re_n//f)*f - re_n
if result == 0 or result == 100:
print('00')
else:
result += f
if result <10:
print('0'+str(result))
else:
print(result)