ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1110번 : 더하기 싸이클 (Python, 파이썬)
    카테고리 없음 2019. 3. 6. 11:10

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


    깊이 생각할 것 없이 문제 내용을 충실히 반영하면 되는 문제였다. 다만, '먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자릿수로 만들고, 각 자리의 숫자를 더한다.'라고 나와있는데 코드 작성 시 반영할 필요가 없다. 

    예를 들어서 주어진 수가 10보다 작은 3이라고 가정하자. 10을 곱하지 않고 3을 그대로 사용했을 시 어차피 1의 자릿수이기에 더할 필요 없이 3을 그대로 사용한다. 

    10을 곱해서 30으로 만들어 사용했을 시 각 자리의 수를 더하게 된다. 그래봐야 3+0 = 3 이므로 10을 곱하지 않은 이전 값과 동일하게 된다. 그러니 무시해주면 된다.

     이 문제는 // 연산자와 % 연산자를 잘 사용해야 하는 문제이다. a//b은 a를 b로 나눈 몫을 반환하게 된다.

    a%b는 a를 b로 나눈 후 그 나머지를 반환하게 된다. // 연산과 % 연산에서 b를 10으로 두면 a의 10의 자리 숫자(10으로 나눈 몫은 결국 10의 자릿수이기 때문에)와 a의 1의 자리 숫자(10으로 나눈 다음 나머지는 결국 1의 자릿수이기 때문에)를 구할 수 있게 된다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    num = int(input())
    check = num
    new_num = 0
    temp = 0
    count = 0
    while True:
        temp = num//10 + num%10
        new_num = (num%10)*10 + temp%10
        count += 1
        num = new_num
        if new_num == check:
            break
    print(count)
    cs


Designed by Tistory.