프로그래밍/백준

[알고리즘] 백준(baekjoon) 1075번 파이썬

매 석 2022. 9. 28. 22:45
반응형

 

1075번: 나누기

첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.

www.acmicpc.net

나누기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB 16289 8709 7688 55.678%

문제

두 정수 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

문제 풀이

#1. while문 해설법
a = input()
b = int(input())
a= int(a[:-2]+"00")
while True:
    if a % b ==0:
        break
    a+=1
print(str(a)[-2:])

#2. for문 해설법
a = input()
b = int(input())
#맨 뒷자리를 00으로 변경
a = int(a[:-2] +'00')
#00부터 99까지 1씩 증가하며 나눠지는 수 찾기
for i in range(100):
    if((a+i) % b ==0):
        #0~9사이인경우 앞에 0붙여서 출력
        if(0<=i<=9):
            print('0'+str(i))
            break
        #2번 출력되지 않게 break
        else:
            print(i)
            break

즉 for문이나 while문이나 문제의 핵심은

1. 뒤의 자릿수 2개를 "00"으로 변환한 후

2. 그 00의 값을 99까지 1씩 증가시키며 

3. b 값으로 나눠지는 첫번째 값을 찾고 멈춘 후

4. 그 값을 출력하는 것이다.