문제 출처
https://www.acmicpc.net/problem/4375
- 정수 n이 주어졌을 때, n의 배수 중에서 1로만 이루어진 숫자를 찾고, 그 길이(자릿수)를 출력해야 합니다.
- 예시로 n이 3이면 3의 배수 중에서 1로만 이루어진 수는 111입니다. 111의 길이가 3이므로 3을 출력해야 합니다.
자료 구조
- ones
- 타입 : 문자열
- 저장 데이터 : 문자'1'로만 이루어진 문자열입니다. 초기값으로 n의 자리수 * '1'을 정해주었습니다.
- num_one
- 타입 : 정수
- 저장 데이터 : ones 문자열을 정수로 바꾼 값을 담을 변수입니다.
나의 풀이
입력 개수가 주어지지 않았기 때문에 while, try를 사용해서 파이썬의 EOF를 처리했습니다.
1로 이루어진 수가 정수n으로 나눠지면 배수라는 것을 이용했습니다.
find_multiple(n) 함수를 만들었고 이 함수에서 1로 이루어진 수가 배수일 때까지 반복해서 비교했습니다.
주의할 점은 ones의 초기값을 '1' * len(n)+1로 선언하면 1일 때 결괏값이 2로 나와서 문제를 맞힐 수 없습니다.
작성한 코드
- 사용 언어 : 파이썬
def main():
while True:
try:
n = int(input())
result = find_multiple(str(n))
print(result)
except:
return
def find_multiple(n):
ones = '1' * len(n)
num_one = int(ones)
while True:
if not num_one % int(n):
break
ones += '1'
num_one = int(ones)
return len(ones)
if __name__ == '__main__':
main()
- 점수 : 100점 / 100점
느낀 점
개인적으로 문제를 읽고 이해하는데 시간이 더 오래걸렸습니다. 1로만 이루어진 n의 배수가 '1로만 이루어진 n'의 배수로 보였기때문입니다... 독해력의 문제인지... 책을 더 읽어야 하는 건지...
'개발 > 알고리즘' 카테고리의 다른 글
[백준 17425]약수의 합 - 파이썬 풀이 (0) | 2021.12.07 |
---|---|
[백준 17427]약수의 합2 - 파이썬 풀이 (0) | 2021.12.06 |
[프로그래머스 12899]124 나라의 숫자 - 파이썬 풀이 (0) | 2021.11.04 |
[BOJ 10814] 나이순 정렬 - 파이썬, 람다 (0) | 2021.07.20 |
[알고리즘] 최대공약수, 최소공배수 - 파이썬 (0) | 2021.06.24 |