[프로그래머스] (lv.2) 점프와 순간이동(java)

0

코딩테스트

목록 보기
23/37
post-thumbnail

<문제>


https://school.programmers.co.kr/learn/courses/30/lessons/12980

<나의 풀이>

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

<다른 사람의 풀이>

public class Solution {
    public int solution(int n) {
        int sub = 1;
        int ans = 0;
        while(n != 0){
            if(n % 2 == 1){
                n -= sub;
                ans += 1;
            }
            n /= 2;
        }
        return ans;
    }

}

<리펙토링>

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

<핵심 개념>

문제는 길었는데 나눗셈 검산식 쓰는 느낌으로 푸는게 제일 빠른 풀이었던 것 같다.

<피드백>

수학적으로 생각하는게 빠른 경우가 많은데 수학적 접근 + 적재적소에 쓸 수 있는 프로그래밍 능력이 필요하구나를 맛본 문제였던 것 같다.

profile
두둥탁 뉴비등장

2개의 댓글

comment-user-thumbnail
2023년 8월 15일

글 잘 봤습니다.

1개의 답글

관련 채용 정보