[알고리즘] 콜라츠 추측

2023. 3. 7. 12:27·알고리즘
반응형

문제 설명

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을 반환해 주세요.

제한사항

  • 입력된 수, num은 1 이상 8,000,000 미만인 정수입니다.

입출력 예

n result
16 4
626331 -1
6 8

입출력 예 설명

입출력 예 #1
문제의 설명과 같습니다.

입출력 예 #2
16 → 8 → 4 → 2 → 1 이 되어 총 4번 만에 1이 됩니다.

입출력 예 #3
626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야 합니다.

나의 풀이

function solution(num) {
    var answer = 0;
    
    while(answer !== 500) {
        if(num === 1) {
            return answer
        }
        
        answer += 1;
        
        if(num % 2 === 0) {
            num = num / 2;
        } else {
            num = num * 3 + 1
        }
    }
    
    return -1
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘' 카테고리의 다른 글

[알고리즘] 대충 만든 자판  (0) 2023.03.09
[알고리즘] 행렬의 덧셈  (0) 2023.03.08
[알고리즘] 짝수와 홀수  (0) 2023.03.04
[알고리즘] 평균 구하기  (0) 2023.03.03
[알고리즘] 모의고사  (0) 2023.03.01
'알고리즘' 카테고리의 다른 글
  • [알고리즘] 대충 만든 자판
  • [알고리즘] 행렬의 덧셈
  • [알고리즘] 짝수와 홀수
  • [알고리즘] 평균 구하기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    ReactNative
    CSS
    Node.js
    바질
    리얼학습일기
    Babel
    리액트
    덤프
    리얼클래스
    타입스크립트
    redux
    다이소
    영어독학
    react
    알고리즘
    바질 키우기
    Docker
    식물
    javascript
    typescript
    영어회화
    네트워크
    next.js
    ChatGPT
    webpack
    타일러영어
    자바스크립트
    프로그래머스
    네이버 부스트캠프
    CCNA
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[알고리즘] 콜라츠 추측
상단으로

티스토리툴바