반응형

백준 더하기 사이클 문제 풀이

 

 

 

입력한 값 n을 이용해서 x,y를 만들고 (x=n/10, y=n%10)

새롭게 만들어진 값 (임시 저장 값) tmp = (y + (x+y+의 10으로 나눈 나머지 값))을 입력값 n과 같아질 때까지 반복

 

26을 예로 들면

26 (x=2, y=6)

-> 2+6 = 8

-> (x+y)

tmp = 68

-> (10*y + (x+y)%10)

= 6*10 + (8)%10 과 같다

 

이 과정을  4번 반복하면 기존 입력한 값인 26이 나옴

 

 

구현은

이러한 루틴을 통해서 입력받은 값 26과 중간 과정 값이 일치할 때까지 while문 조건에 넣어서 반복시켰다

 

예제 값인 26을 입력했을때, 처음에 횟수를 출력할 cnt가 3이 나와서 뭐지했는데

이미 앞에서 tmp를 더한걸 추가해주지않아서 1보다 작은값이 나옴 ㅎ

 

 

#include<bits/stdc++.h>
using namespace std;
//BOJ 1110

int main() {
	int n = 0;
	int cnt = 0;    
	cin >> n;
    
	int x = n/10;
	int y = n%10;
    
	int tmp = y*10+(x+y)%10;
    
	cnt++;
    
	while(tmp!= n){
		x = tmp/10;
		y = tmp%10;
		tmp = y*10+(x+y)%10;
		cnt++;
	}
	
    cout<<cnt;
	
    return 0;
}

 

 

출처 : www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

반응형

+ Recent posts