목차
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은 쉽게 처리할 수 있음을 알 수 있다.
'Programming > Baekjoon Online Judge' 카테고리의 다른 글
| [BOJ 백준] C언어 34073번 : DORO (0) | 2025.08.14 |
|---|---|
| [BOJ 백준] C언어 2864번 : 5와 6의 차이 (1) | 2025.08.08 |
| [BOJ 백준 C언어] 31881번 : K512에 바이러스 퍼뜨리기 (2) | 2025.08.01 |
| [BOJ 백준] 10171번 : 고양이(C) (2) | 2025.07.31 |
| [BOJ 백준] 10172번 : 개(C) (1) | 2025.07.30 |
댓글