구현, 수학

[백준] 1110. 더하기 사이클 풀이

hch06 2025. 2. 2. 17:10

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

 

문제에서 제시한 내용대로 N이 일의 자리면 10을 곱한다.
그 다음 (일의자리*10) 과 (십의자리+일의자리)를 더하여 새로운 수를 만든다.
이 과정을 처음 N과 같아질 때까지 반복한다.

 


C

더보기
더보기
#include <stdio.h>

int main() {
    int n; scanf("%d", &n);
    int num;
    if(n < 10) num = n*10 + n;
    else num = ((n % 10) + (n / 10))%10 + ((n%10) * 10);
    
    int cnt = (num == 0) ? 0 : 1;
    while(1){
        num = (((num % 10) + (num / 10))%10) + ((num%10) * 10); // (일의자리 + 십의자리)%10 + 일의자리*10
        cnt++;
        if(num == n) break;
    }
    printf("%d", cnt);
}

Python

더보기
더보기
n = int(input())

if n < 10: newNum = (n*10) + n
else: newNum = (n%10)*10 + (((n // 10) + (n%10))%10)

cnt = 1
while newNum > 0:
    cnt += 1
    newNum = (newNum%10)*10 + (((newNum // 10) + (newNum%10))%10)
    if newNum == n: break
print(cnt)