Python) 4375번 1
난이도 : 실버3
유형 : 수학
카테고리 : 백준온라인저지
날짜 : 2022-02-17
문제 풀이
이 문제는 문제를 이해하는데에 시간이 엄청 걸렸던 것 같다. 이게 무슨말이지..? 했던 문제 중 하나였는데 문제를 풀이해보자면 이렇다.
1로만 이루어진(1, 11, 111, 1111…) n의 배수 중 가장 작은 값의 자리수를 출력하는 문제이다. 그리고 입력에는 여러 개의 테스트 케이스가 주어진다고 했으므로 테스트 케이스가 계속 입력될 수 있도록 코드를 구현해야 한다.
예를 들어 n이 3일 경우 111이 1로만 이루어진 3의 가장 작은 배수이다. 111은 3자리이므로 답은 3이다.
n이 7일 경우 111111이 1로만 이루어진 7의 가장 작은 배수이다. 111111은 6자리 이므로 답은 6이다.
쉽게 이야기해서 1, 11, 111...의 수를 반복하면서 n으로 나눴을 때 0으로 딱 떨어지는 수의 자리수를 출력해주면 되는 문제였다.
입력값과 1,11,111을 만들어주는 수 num, 자리수를 카운트해주는 count 변수를 받는다.
1
2
3n = int(input())
num = 1
count = 1while
문을 사용하여 num이 1, 11, 111, 1111 …이 되도록무한반복
시켜준다. 그리고 num의 자리수를 알 수 있도록 하기위해count를 +1
해주며 반복시켜준다.1
2
3while True :
num = (num*10)+1 # 1,11,111 ...
count+=1만약
num % n == 0
이라면 나누어 떨어진 것이기 때문에break
로 반복문을 탈출한다.1
if num%n==0 : break
문제에서 입력 탈출조건을 제공하지 않기 때문에
EOF(End Of File) 예외처리
를try,catch
문으로 작성한다.1
2
3
4
5try :
.
. # 중간 코드
.
except EOFError : break
전체 코드
1 | while True : |
Python) 4375번 1