[Algorithm] 콜라츠 추측

2024. 12. 12. 14:53·Algorithm/Practice

문제 설명

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면,

모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다.

위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요.

단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

 

문제 유형

  • 시뮬레이션 문

 

아이디어

  1. [반복문] 500번 반복한다.
    1. 만약 값이 1이라면 반복문을 멈추고 반복 횟수를 저장한다.
    2. 그렇지 않다면 짝수인지 확인한다.
      1. 2로 나눠준다.
    3. 그렇지 않다면 홀수인지 확인한다.
      1. 3을 곱하고 1을 더한다.
  2. 결과값을 반환한다.

 

코드 작성

int solution(int num) {
    int result = -1;
    long long numTemp = num;
    
    for (int i = 0; i < 500; i++)
    {
        if (numTemp == 1)
        {
            result = i;
            break;
        }
        
        if (numTemp % 2 == 0)
        {
            numTemp /= 2;
        }
        else
        {
            numTemp *= 3;
            numTemp += 1;
        }
    }
        
    return result;
}

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] 핸드폰 번호 가리기  (1) 2024.12.13
[Algorithm] 음양 더하기  (1) 2024.12.13
[Algorithm] 두 정수 사이의 합  (0) 2024.12.11
[Algorithm] 하샤드 수  (0) 2024.12.11
[Algorithm] 정수 내림차순으로 배치하기  (0) 2024.12.11
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] 핸드폰 번호 가리기
  • [Algorithm] 음양 더하기
  • [Algorithm] 두 정수 사이의 합
  • [Algorithm] 하샤드 수
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    tsoftobjectptr
    c++
    Algorithm
    GameplayEffect
    DesignPattern
    Implement
    디자인패턴
    디자인 패턴
    소프트 레퍼런신
    퀘스트
    알고리즘
    Til
    basic
    레벨디자인
    Design Pattern
    actor
    KPT회고
    액터
    Animation
    component
    unreal
    게임동기화
    하드 레퍼런싱
    assetmanager
    본캠프
    gas
    내일배움캠프
    사전캠프
    AI
    unrealengine
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 콜라츠 추측
상단으로

티스토리툴바