rueki

백준 1110번 : 더하기 사이클(C/C++) 본문

C, C++ 문제풀이

백준 1110번 : 더하기 사이클(C/C++)

륵기 2019. 6. 28. 10:22
728x90
반응형

문제부터 바로 보자.

문제의 Point는 나누기연산을 통해 몫과 나머지를 구하는게 중요하다.

각 자리 수를 분할해서 더하고, 더한 값을 그 다음 숫자의 1의 자리로 활용하기 때문이다.

문제를 한 번 풀어보자.

26 / 10 = 2 -> 26을 10으로 나누어서 십의 자리 값을 얻었다.

26 % 10 = 6 -> 나머지 연산을 통해 1의 자리 값을 얻었다.

2 + 6 = 8

68이라는 값을 얻기 위해서는 6*10 + 8을 해주면 된다.

이 때 입출력값으로 입력값은 숫자, 출력 값은 원래 숫자로 돌아오기까지의 횟수이다.

위의 식을 코드로 한 번 써보자

#include <iostream>
using namespace std;

int main(){
	int n, n1, n2,n3;
	int count = 1; // 사이클 횟수 선언 
	cin>>n; //숫자 입력 
	int check =n;
	while(1){
		
		n1 = n/10; 
		n2 = n%10;
		n3 = n1 + n2;
		n = n2*10 + n3%10;
		if(check==n){ // 처음 입력값과 사이클이 돌아서 처음 입력값으로 돌아온 숫자 비교 
			break;
		}else{
			count++;//횟수 증가 
		}
	}
	cout<<count<<endl;
}

n3에서 n1과  n2가 더해졌을 때 10이 넘는 값이 발생할 가능성이 있기 때문에 나머지 연산을 추가로 진행했다.

이번 포스팅은 여기서 마치겠다.

728x90
반응형

'C, C++ 문제풀이' 카테고리의 다른 글

백준 8958번 : OX퀴즈 (C/C++)  (0) 2019.06.30
백준 1546번 : 평균(C/C++)  (0) 2019.06.30
백준 2577 : 숫자의 개수(C/C++)  (0) 2019.06.28
백준 2562번 : 최댓값(C/C++)  (0) 2019.06.28
백준 10951번 : A+B -4 (C/C++)  (0) 2019.06.28
Comments