728x90
1. 문제 설명
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
- 입력
- 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
- 출력 :1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.
2. 코드
import sys
input = sys.stdin.readline
# 현재 문제는 몇개의 입력인지 나와 있지 않다.
# 몇개 입력인지 모르기 때문에 while True 로 진행한다.
while True:
# try, except를 이용하여 무한루프 진행할지 , 종료 할지 결정한다.
try:
# 문제에서 1로만 이루어진 숫자 라고 했으니 1로만 이루어진 숫자를 만들어준다.
a = "1"
# a 값을 나눌 n의 값을 입력 받는다.
n = int(input())
# 무한 루프를 이용한다.
while True:
# 만약 a 라는 숫자가 n값으로 나누어 떨어져서 나머지 값이 0인지 아닌지 판별한다.
if not int(a) % n:
# 0 이라면 a의 길이를 출력해주고 무한 루프를 종료 한다.
print(len(a))
break
# if절에 걸리지 않으면 게속적으로 a += "1"를 진행하여 a에 1를 지속적으로 추가한다
# ex) "1", "11", "111", "1111" -> ... "111111111111"이 표시된다.
a += "1"
except:
break
3. 회고
Q. 문제를 보고 든 생각
- 문제에서 몇개의 입력인지 주어지지 않아서 당황 했던 문제이다.
- 하지만 이전에도 이러한 문제를 몇번 본적이 있어서 몇개의 입력인지 주어지지 않은 문제 유형이구나를 쉽게 떠올려서 try, except 특성을 이용하여 문제를 풀어 나가야 겠다는 생각을 했다.
4. 아쉬운 점
1. 두번째 무한 루프절을 while int(a) % n 라고 수정해도 될것 같다는 생각이 들었고 이 코드가 더 사람이 알아보기 쉬운 코드일까?? 라는 생각을 했다... (댓글로좀 알려주세요)
2. 조금더 코드를 줄일수 있지 않을까??(고민을 해봐야 겠다.)
728x90
'Algorithm > Python' 카테고리의 다른 글
백준 17425번 약수의 합 (0) | 2023.01.05 |
---|---|
백준 6588번 골드바흐의 추측 (0) | 2023.01.05 |
백준 1929번 소수 구하기 (1) | 2023.01.05 |
백준 1978번 소수 찾기 (0) | 2023.01.05 |
백준 1934번 최소공배수 (0) | 2023.01.05 |