Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

RIRINTO's Blog

BOJ 1110: 더하기 사이클 (Python) 본문

BOJ

BOJ 1110: 더하기 사이클 (Python)

RIRINTO 2021. 9. 19. 03:24

BOJ 1110: 더하기 사이클

http://boj.kr/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net


N을 입력받아 몇 번의 사이클만에 원래의 수로 돌아오는지 확인하는 문제입니다.

 

사이클마다 수행해야 할 동작은 다음과 같습니다.

만약 수가 10보다 작다면 앞에 0을 붙입니다.

각 자리의 숫자를 더합니다.

주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어붙여 새로운 숫자를 만듭니다.

 

26

→ 2 + 6 = 8

→ 새로운 수 68

 

68

→ 6 + 8 = 14

→ 새로운 수 84

 

84

→ 8 + 4 = 12

→ 새로운 수 42

 

42

→ 4 + 2 = 6

→ 새로운 수 26

 

26은 4번만에 원래 수로 돌아올 수 있습니다.

26의 사이클은 4입니다.


더보기

문자열로 바꾸고 각 자리를 쪼갠 후 더하여 풀 수 있습니다.

n = N = int(input())

cycle = 0
while True:
    n = n % 10 * 10 + sum(map(int, list(str(n)))) % 10

    cycle += 1
    if n == N:
        break
print(cycle)

 

문자열로 바꾸지 않고도 각 자리수를 더할 수 있습니다.

def sum_of_each_digit(number):
    result = 0
    while number:
        result += number % 10
        number = number // 10
    return result


n = N = int(input())

cycle = 0
while True:
    n = n % 10 * 10 + sum_of_each_digit(n) % 10

    cycle += 1
    if n == N:
        break

print(cycle)

'BOJ' 카테고리의 다른 글

BOJ 2562: 최댓값 (Python)  (0) 2021.09.19
BOJ 10818: 최소, 최대 (Python)  (0) 2021.09.19
BOJ 10951: A+B - 4 (Python)  (0) 2021.09.19
BOJ 10952: A+B - 5 (Python)  (0) 2021.09.19
BOJ 10871: X보다 작은 수 (Python)  (0) 2021.09.19
Comments