[프로그래머스] 마법의 엘리베이터 (JAVA)

유존돌돌이·2023년 2월 13일
0

Programmers

목록 보기
165/167
post-thumbnail

문제설명

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

제한사항

  • 1 ≤ storey ≤ 100,000,000

소스

class Solution {
    public int solution(int storey) {
		// 자리별로 숫자 가져오기 용이하게 String을 쓴다.
        String num = String.valueOf(storey);
        return helper(num, num.length()-1, 0, 0);
    }
	
	public int helper(String num, int idx, int cnt, int up) {
		// 마지막 자리 넘어서면 올림이랑 이제까지 카운트한 값 리턴
		if(idx<0) {
			return cnt+up;
		}
		// 현재 자리 수 + 올림 값
		int n = (num.charAt(idx)-'0')+up;
		// 10일 때는 그냥 올림 추가해서 다음자리로 넘김(최소만 찾으면 되므로)
		if(n==10) {
			return helper(num, idx-1, cnt, 1);
		}
		// 현재 자리 수 +와 -일 때 중 Minimum 값을 리턴
		return Math.min(helper(num, idx-1, cnt+10-n, 1),helper(num, idx-1, cnt+n, 0));
	}
}

0개의 댓글