본문 바로가기
Programming/Baekjoon Online Judge

[BOJ 백준 / Python 3] 4375번: 1

by 장경혁tv 2025. 12. 20.

목차

1. 문제

2. 풀이

3. 메시지

 

1. 문제

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

2. 풀이

언어 : Python 3

정수 n을 입력받아 1, 11, 111, ... 에서 n의 배수 중 가장 작은 수의 자릿수를 출력하면 된다.

문제

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

출력

각 자릿수가 모두 1로만 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.

프로그래밍

입력은 여러 개의 테스트 케이스로 주어지므로 try, catch로 입력의 끝(EOF, End Of File)을 처리한다.

one 변수와 count를 1로 초기화하고, one은 1, 11, 111, ... (수식으로 one = one * 10 + 1) 등 1로만 자릿수를 늘린다.

반복문 1회당 count를 증가시키고, one % n == 0 (즉, one이 n의 배수인지 확인)이면, count를 출력한다.

예외로 n = 1일 때, 1을 출력한다. (1의 배수 중 가장 작은 수의 자릿수는 1이므로 1이 출력된다.)

소스코드

https://github.com/NewLandTV/Baekjoon-Online-Judge/blob/main/Python/4375.py

 

Baekjoon-Online-Judge/Python/4375.py at main · NewLandTV/Baekjoon-Online-Judge

This repository is where problems solved on the Baekjoon Online Judge site are uploaded. - NewLandTV/Baekjoon-Online-Judge

github.com

while True:
    try:
        n = int(input())
    except:
        break

    if n == 1:
        print(1)

        continue

    one, count = 1, 1

    while True:
        one = one * 10 + 1
        count += 1

        if one % n == 0:
            print(count)

            break

3. 메시지

이번 문제에서는 입력의 끝 처리, 수학적 사고, 혹은 브루트포스 알고리즘의 원리가 사용된다.

1, 11, 111, ... 등 다른 언어로는 긴 숫자를 처리하기 어렵지만, Python은 쉽게 처리할 수 있음을 알 수 있다.

댓글