백준 4375번 문제풀이

박세은·2023년 7월 31일

Algorithm

목록 보기
2/11

처음에 문제를 읽을 때부터 '띠용? 무슨 뜻이지?' 싶었던 문제.

각 자릿수가 모두 1로만 이루어진 숫자는 말 그대로 111, 11111, 1111과 같은 숫자를 뜻하는 것이었다.
그리고 이런 숫자들 중에 입력된 숫자 n의 배수인 숫자의 자릿수를 구하는 문제였다.

내가 또 이 문제를 계속해서 틀렸던 이유..!
문제의 첫 줄에 '2와 5로 나누어 떨어지지 않는 정수 n이 주어졌을 때'라고 나와있는데, 이 조건도 문제에 포함되는 줄 알았다. 그래서 내가 따로 필터링 하는 과정을 넣어줘야 하는 줄 알았던게 첫 번째 이유.
그리고 예제 입력만이 들어오는 값의 전부인 줄 알았던 게 두 번째 이유다. 이 문제는 엔터로 숫자를 입력받아도 될 줄 알았다.

a = int(input())

그래서 또 다시 단순하게 input()을 사용했는데, 알고보니 입력될 숫자의 개수도 랜덤이라는 사실!

위의 두 가지를 수정했더니 문제를 금방 풀 수 있었다.

def n(n):
    i = 1
    num = 0
    cnt = 0
    while True:
        num = num + i
        i = i*10
        cnt += 1
        if(num%n == 0):
            break
    print(cnt)


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

내 생각보단 자잘하게 고려해야하는 점이 많은 것 같다; 그렇지만 어쩌겠어요 열심히 해야지 아자아자

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

0개의 댓글