1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
헷갈렸던 이유
자주 하던 실수?인데 while문 안에서 N을 리셋? 안해줘서 무한루프 돌아서 시간 초과남
바뀌는 값과 바뀌지 않아야 할 값을 구분하고 바뀌지 않아야 할 값은 전역이나 while문 밖에 저장해두고
바뀌는 값이 루프를 돌아 와서도 바뀌는지 체크하는 습관을 들이자.
정답코드
#include <iostream>
using namespace std;
int main() {
int N;
int cnt = 1;
int first;
int second;
int sumNum;
cin >> N;
int check = N;
while (1)
{
first = N/10;
second = N %10;
sumNum = first + second;
N = second * 10 + sumNum % 10;
if (check == N)
break;
else
cnt++;
}
cout << cnt;
return 0;
}
'Algorithm > C++' 카테고리의 다른 글
[프로그래머스 lv1] 시저 암호 (0) | 2022.05.17 |
---|---|
[프로그래머스 lv1] 행렬의 덧셈 (0) | 2022.05.13 |
[백준 17413번] 단어 뒤집기 2 (0) | 2022.04.19 |
[백준 1874번] 스택 수열 (0) | 2022.04.10 |
[백준 5635번] 생일 (0) | 2022.04.09 |
댓글