본문 바로가기
Algorithm/C++

[백준 1110번] 더하기 사이클

by imagineer_jinny 2022. 4. 21.

1110번: 더하기 사이클 (acmicpc.net)

 

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

댓글