본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[프로그래머스 1 / c++] 콜라츠 추측

by tokkiC 2022. 6. 17.

확실히 프로그래머스 1단계는 백준 브론즈보다 쉬운것 같다. 물론 뒤쪽 연습문제 기준이다

앞쪽은 1단계라고 하지만 백준 실버나 골드정도 난이도가 보인다. 쉬운거부터 빠르게 1단계를 클리어하고

어려운 문제를 풀려고 한다. 오답노트에는 실패 케이스만 올리고 있다

 

그냥 조건만 열심히 구현한 코드다. 딱히 엄척난 로직이 있지 않다

하지만 num 가 int 형으로 주어지는데, 이를 그대로 사용하면 테스트 케이스에서 숫자가 커져서 런타임에러가 난다

이는 num 이 int 의 범위 이상의 수가 되었기 때문이다

그러니 그냥 num 을 long long 자료형으로 바꿔주면 쉽게 해결 된다

#include <string>
#include <vector>

using namespace std;

int solution(int num) {
    int answer = 0;
    long long nu = num;
    int cnt = 0;
    
    if(nu==1){
        cnt==0;
    } else{
        while(true){
            if(nu==1){
                break;
            } else if(cnt==500){
                cnt=-1;
                break;
            } else if(nu%2==0){
                nu=nu/2;
                cnt++;
            } else {
                nu=(nu*3)+1;
                cnt++;
            }
        }
    }
    answer = cnt;
    return answer;
}

댓글