[코테/JAVA] 프로그래머스 : 숫자 변환하기

    728x90
    반응형

    문제

     

     

    접근방법

    1) 완전탐색

     

     

    코드

    접근방법 : 1)

    class Solution {
        public int result=-1;
    
        public int solution(int x, int y, int n) {
            changeNumber(x,y,n,0);
            return result;
        }
    
        /**
         * 숫자 변환하기
         * 완전탐색을 이용해 x가 y가 되는 모든 방법을 탐색한다
         * @param x y가 되기 위해 연산되는 자연수
         * @param y x를 연산한 결과와 일치되어야 하는 자연수
         * @param n x에 덧셈 연산시 사용할 자연수
         * @param loop 연산 횟수
         */
        public void changeNumber(int x, int y, int n, int loop) {
            if(x>y)
                return;
            else if(x==y) {
                result=result==-1?loop:(result<loop?result:loop);
                return;
            }
            changeNumber(x*2,y,n,loop+1);
            changeNumber(x*3,y,n,loop+1);
            changeNumber(x+n,y,n,loop+1);
        }
    }

     

     

    결과

     

     

    주의사항

    1) 완전탐색시 시간 초과가 발생

    2) loop가 int의 범위를 벗어나 런타임 에러가 발생함

    728x90
    반응형

    댓글