본문 바로가기
Algorithm/Python

백준 4375번 1

by Shark_상어 2023. 1. 5.
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