콜라츠 추측

이보아·2024년 5월 7일
0

문제

의사코드

  1. 입력수가 짝수, 홀수에따라 다르게 처리하기
  2. 결과가 1이 될때까지 반복

위의 의사코드에서 간과한 부분이 있었다 1이 되지 않을때 -1로 반환되는 방법을
추가해야했다.

수정된 의사코드

  1. 입력수가 짝수, 홀수에따라 다르게 처리하기
  2. 1이 아니고 500이 아닐떄까지 조건 (&&)
  3. 1일때는 0 아닐때는 -1 처리

코드 작성에 앞서

코딩 테스트를할때 조건문을 사용할일이 많은데 주로 if, else문을 사용하다가 삼항 연산자를 사용하면 동일한 처리지만 더 직관적이고 코드 수를 줄일 수 있어서 삼항 연산자에대해 더 알아보려고 한다.

삼항 연산자

조건문 ? true 결과값 : false 결과값

var age = 26;
var beverage = age >= 21 ? "Beer" : "Juice";
console.log(beverage); // "Beer"

삼항 연산자는 if문 처럼 여러개의 조건으로도 사용 가능하다.

// 삼항연산자 
function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

// if문
function example(…) {
    if (condition1) { return value1; }
    else if (condition2) { return value2; }
    else if (condition3) { return value3; }
    else { return value4; }
}

제출한 코드

1 이 아니고 그리고 500이 아닐때까지 삼항 연산자 조건문을 이용해서 반복해서 실행해주고 의사코드의 3번 조건처리로 1이 되지 않는다면 -1이 반환되도록 처리해줬다.

function solution(num) {
  var answer = 0;
  while (num != 1 && answer != 500) {
    num % 2 == 0 ? (num = num / 2) : (num = num * 3 + 1);
    answer++;
  }
  return num == 1 ? answer : -1;
}

[알고리즘] 콜라츠 추측 문제를 풀며..🤔

삼항 연산자를 잘 사용하면 편하고 봤을때도 직관적이여서 좋은거 같다. 요즘 매일 알고리즘 문제를 풀고 있는데 이제는 그냥 문제만 푸는게 아니라 어떻게 해야 더 좋은 방법으로 해결할 수 있는지 한번 더 생각하며 코드를 작성해야겠다.

profile
매일매일 틀깨기

0개의 댓글