프로그래머스 예상 대진표 자바스크립트

버건디·2023년 7월 8일
0

프로그래머스

목록 보기
58/66
post-thumbnail

문제 링크


- 1차 풀이(틀림)

function solution(n, a, b) {
  let minNum = Math.min(a, b);
  let maxNum = Math.max(a, b);
  var answer = 0;

  while (true) {
    answer++;
    minNum = Math.ceil(minNum / 2);
    maxNum = Math.ceil(maxNum / 2);

    if (minNum % 2 !== 0 && maxNum % 2 === 0 && maxNum - minNum === 1) {
      break;
    }
  }

  return answer + 1;
}

작은 숫자가 홀수이고, 큰 숫자가 짝수이며, 두 수의 차가 1일때 서로 만나게 되는 규칙을 발견했었다.
(2 와 3은 대결을 하지 않지만, 1과 2, 3과 4는 서로 대결한다)

하지만 3개의 테스트케이스에서 시간초과가 나왔다.

- 재풀이

function solution(n, a, b) {
  let answer = 0;

  while (a !== b) {
    a = Math.ceil(a / 2);
    b = Math.ceil(b / 2);
    answer++;
  }

  return answer;
}

그냥 아예 서로 값이 같아진다면 answer +1 이 아닌 answer를 리턴해주면 되고, 같아진다는 의미 자체가 서로 만난다는 의미이다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글

관련 채용 정보