두 정수 N과 F가 주어진다. 지민이는 정수 N의 가장 뒤 두 자리를 적절히 바꿔서 N을 F로 나누어 떨어지게 만들려고 한다. 만약 가능한 것이 여러 가지이면, 뒤 두 자리를 가능하면 작게 만들려고 한다.
예를 들어, N=275이고, F=5이면, 답은 00이다. 200이 5로 나누어 떨어지기 때문이다. N=1021이고, F=11이면, 정답은 01인데, 1001이 11로 나누어 떨어지기 때문이다.
첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.
첫째 줄에 마지막 두 자리를 모두 출력한다. 한자리이면 앞에 0을 추가해서 두 자리로 만들어야 한다.
예제 입력 1
1000
3
예제 출력 1
02예제 입력 2
2000000000
100
예제 출력 2
00예제 입력 3
23442
75
예제 출력 3
00예제 입력 4
428392
17
예제 출력 4
15예제 입력 5
32442
99
예제 출력 5
72
시간 제한 | 메모리 제한 |
---|---|
2 초 | 128 MB |
def changeNum(n):
n = list(n)
length = len(n)
return int("".join(n[:length-2]) + "0"*2)
n = input()
f = int(input())
tmp = changeNum(n)
while True:
if tmp % f == 0:
break
tmp += 1
tmp = str(tmp)
print(tmp[len(tmp)-2:].zfill(2))
가장 작은 값은 뒤의 두 자리를 00
으로 만들고 1
을 계속 더해줬을 때 나눠 떨어지는 값이다. 따라서 뒤의 두 자리를 00으로 바꿔주고, 그 부분만 출력했다. 십의 자리에 0
을 채우라는 조건이 있어 zfill
을 사용했다.
풀다가 changeNum
함수가 의미없어서 코드를 수정했다.
n = input()
f = int(input())
tmp = int(n[:-2] + "00")
while True:
if tmp % f == 0:
break
tmp += 1
tmp = str(tmp)
print(tmp[-2:].zfill(2))
변수[-1]
이 맨 뒤인 것은 알았는데, 변수[-2]
가 되는 줄은 몰랐다. 앞으로는 이렇게 사용해야지.
숏코딩은 신기해서 가져왔다.
n, f = int(input()),int(input())
print(str((n%100 - n%f) % f).zfill(2))
숏코딩에 예제 1
을 대입해보면 -1 % 3 = 2
가 나온다. 내가 이해 못한 부분은 "-1을 3으로 어떻게 나누며, 나머지가 왜 2인가?"였다. 여기저기 찾아보면서 내가 내린 계산 방법은 -피제수 = 제수*(-1) + 나머지
이다. 제수를 음수화해서 피제수를 빼주면 나머지인 셈이다. 예제를 활용하면 -1 = 3*(-1) + x
로 x = 2
가 나온다. 오래된 수포자 출신이라 이해하는데 정말 오래 걸렸다. 물론 숏코딩 로직은 모르겠다.