BOJ-백준 4375번 1
링크 : https://www.acmicpc.net/problem/4375
4375번: 1
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
www.acmicpc.net
문제
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
✅ Python 정답 코드 입니다. 더보기 클릭!
import sys
input = sys.stdin.readline
nums = []
while 1:
try:
nums.append(int(input()))
except:
break
for n in nums:
allowed = 1
allowed_len = 1
while allowed%n != 0:
allowed+=10**(allowed_len)
allowed_len+=1
print(allowed_len)
📌 해설
1, 11, 111, 1111, 11111 ... 과 같이 1로만 이루어진 숫자가 n의 배수 중에 있는지 확인하고
가장 작은 수(1, 11, 111 ...)의 자리수를 출력합니다.
🚩주의
n 의 배수 중에서 1, 11, 111, 1111 ...을 찾는 것이 아닌
1, 11, 111, 1111... 이 n으로 나누어 지는지 확인해야 연산 과정을 줄일 수 있습니다.
import sys
input = sys.stdin.readline
nums = []
while 1:
try:
nums.append(int(input()))
except:
break
1. n 들을 저장할 list 변수 nums를 선언합니다. nums의 개수는 주어지지 않고, 많은 양을 입력받을 수 있기 때문에
sys,stdin.readline을 사용했습니다.
for n in nums:
allowed = 1
allowed_len = 1
while allowed%n != 0:
allowed+=10**(allowed_len)
allowed_len+=1
print(allowed_len)
2. allowed 는 1,11,111,1111 ... 입니다. 1부터 시작하여 while문을 돌때 마다 11, 111, 1111... 이 됩니다.
3. allowed 가 n 의 배수가 아니라면 allowed의 길이를 1 더해 줍니다.
4. allowed가 n 의 배수라면 allowed의 길이를 출력합니다.
::
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/027.gif)
'✅ 문제풀이' 카테고리의 다른 글
BOJ-백준 6588번 골드바흐의 추측 (0) | 2021.09.20 |
---|---|
BOJ-백준 17425번 약수의 합 (0) | 2021.09.18 |
BOJ-17427번 약수의 합 2 (0) | 2021.09.18 |
BOJ-10430번 나머지 (0) | 2021.09.17 |
BOJ-백준 1697번 숨바꼭질 (0) | 2021.09.08 |