코테

백준_No1075_나누기

강용민 2022. 7. 5. 18:08

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

 

1075번: 나누기

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

www.acmicpc.net

 

문제

두 정수 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을 추가해서 두 자리로 만들어야 한다.


풀이

이번 문제는 풀이가 2가지로 나뉜다. 

풀이 1

입력받은 정수 N의 가장 뒤 두 자리수만 바뀌어야만 한다.

즉, 세번째 자리부터는 바뀌면 안되므로 N에 대하여 100의 자리수에서만 한정하여 나눠떨어지는 값을 찾고, 리스트에 저장한다.

예를들어 N이 1234고 F가 10이면, 우리가 원하는 값은 1200~1299사이에 존재한다.

1200에서 1299사이에서 10으로 나눠지는 값을 찾는것이다.

 

이를 코드로 작성하면 다음과 같다.

for i in range(N-(N % 100), N-(N % 100)+100):
    if i % F == 0:
        lst.append(i)

리스트값들의 맨 뒤 두자리만 남기기위해 100으로 나눈 나머지 값들만 남기고, 그 중 제일 작은 값을 출력한다.

전체 코드는 다음과 같다.

N = int(input())
F = int(input())

lst = []

for i in range(N-(N % 100), N-(N % 100)+100):
    if i % F == 0:
        lst.append(i)
lst = [i % 100 for i in lst]

print("{0:0>2}".format(min(lst)))

 

풀이2

맨 처음에 맨 뒤 2자리를 00을 붙이는 방법이다.

그 후에 1씩 증가시키면서 입력받은 F로 나눠 떨어진 값의 뒤 2자리를 출력한다.

이를 코드로 작성하면 다음과 같다.

N = input()
F = int(input())

N = int(N[:-2] + "00")

while True:
    if N % F == 0:
        break

    N += 1

print("{0:0>2}".format(N % 100))

'코테' 카테고리의 다른 글

코테_Baekjoon_21608_상어초등학교  (0) 2023.08.07
코테_BAEKJOON_14501_퇴사  (0) 2023.07.31
코테_Chapter01_그리디  (0) 2022.07.19
백준_No1009_분산처리  (0) 2022.07.05
백준_No1837_암호제작  (0) 2022.07.04