Post

[Baekjoon] # 4375: 1

1

문제

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

예제

  • 입력
    1
    2
    3
    
    3
    7
    9901
    
  • 출력
    1
    2
    3
    
    3
    6
    12
    

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def get_inputs():
    import sys

    input_data = sys.stdin.read()
    inputs = map(int, input_data.splitlines())

    return inputs


def solution(n):
    """
    함수는 정수 n을 받아서 n의 배수인 1로만 구성된 가장 작은 숫자를 계산합니다.
    계산된 숫자의 자릿수를 반환합니다.
    """
    if n == 1:
        return 1

    target_num = 1

    digit = 1
    while True:
        digit += 1
        target_num = target_num * 10 + 1
        if target_num % n == 0:
            break

    return digit


def main():
    inputs = get_inputs()

    result = [solution(n) for n in inputs]

    print(*result, sep="\n", end="")


if __name__ == "__main__":
    main()

해결 방법

  1. While True
  2. loop_count자리 숫자이면서 모든 자릿수가 1인 정수 생성
  3. 나머지가 0 인지 확인
  4. 맞으면 break, 틀리면 continue

의사 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
만약 n이 1이라면:
    1을 반환한다

변수 target_num을 1로 초기화
변수 digit을 1로 초기화

무한 루프 시작:
    digit을 1 증가
    target_num을 target_num * 10 + 1로 업데이트
    만약 target_num이 n으로 나누어 떨어지면:
        루프를 종료

digit을 반환

URL

This post is licensed under CC BY 4.0 by the author.