본문 바로가기
Algorithm Study/Programmers (JAVA)

프로그래머스 Lv2_점프와 순간 이동_Java

by 창브로 2024. 7. 8.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12980?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

import java.util.*;

public class Solution {
    public int solution(int n) {
        int ans = 0;
        
        if(n == 1) {
            ans = 1;
        } else {
            while(n > 0) {
                if(n % 2 == 0) {
                    n = n / 2;
                } else {
                    ans++;
                    n = n / 2;
                }
            }
        }

        return ans;
    }
}

 

회고

- 2로 나누었을때 나누어 떨어지지 않으면 왜 ans에 1을 더하면 다시 while문에 들어가서 if문을 탐색하는지 이해하면 쉬운 문제였다

- 2로 나누었을때 나누어 떨어지지 않으면 나머지는 무조건 1이다 그러니 사실상 n에서 1을 빼기 때문에 정답에 1을 더해주고 다시 while문을 돌면 된다