본문 바로가기

CS/알고리즘

[230416] 점프와 순간 이동

반응형

 

문제

 

풀이

이번 문제는 못풀겠어서 질문하기를 통해 힌트를 보고 말았다 (ㅠㅠ)

n이 1이 될 때까지,

n을 2를 나누고

2로 나누어지지 않으면 -1하고, answer++한다.

function solution(n) { 
    let answer = 0;
    
    while(n > 0) {
        if(n % 2 === 1) {
            answer++;
            n--;
        } else {
            n /= 2;
        }
    }
    return answer;
}

 

다른 풀이

  1. 2진수로 변환하고, 그것을 배열로 변환
  2. 1인 부분이 2로 나눴을 때 나머지가 있는 부분. 따라서 배열에 있는 수들을 모두 더한(reduce) 수가 정답이다.
function solution(n) {
	if(n === 1) return 1;
	const nArr = Array.from(n.toString(2));
	return nArr.reduce((a, b) => (+a) + (+b));
}

 

어떻게 이런 생각을..

 

 

 

 

 

 

반응형

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

[230416] 가장 가까운 같은 글자  (0) 2023.04.16
[230416] 푸드 파이트 대회  (0) 2023.04.16
[230414] N개의 최소공배수  (0) 2023.04.14
[230414] 예상 대진표  (0) 2023.04.14
[230413] 크기가 작은 부분문자열  (0) 2023.04.13