• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

# 12943 콜라츠 추측

image

문제 정리

짝수 -> 2로나눔, 홀수 -> 3곱하고 1더함
결과가 1이 될 때까지 반복해야 함! 이 반복의 횟수를 구하면 됨.
(만약에 작업을 500번 반복했는데도 1이 아니면 -1을 반환)

생각해보기

횟수 변수를 하나 만들어서 계속 while문으로 반복해보고 탈출문을 설정해주면 될듯.
탈출 조건 = 결과가 1일 때, 횟수가 500일 때
아니면 while문의 조건이 횟수가 500 이하일때만으로!!

코드 쓰기

image

문제가 이상한 듯..

내 풀이

#include <string>
#include <vector>

using namespace std;

int solution(int num) {
    int answer = 0;
    
    while(answer <= 483){
        if (num == 1){
            break;
        }
                
        if (num % 2 == 0){
            num /= 2;
        } else {
            num = num * 3 + 1;
        }
        answer++;
    }
    
    if(answer >= 483){
        return -1;
    }
    
    return answer;
}

풀고 나서 알게된 것

-