프로그래머스 마법의엘리베이터 java

정상민·2023년 10월 20일

문제링크

문제 접근

  • 뒤에서부터 앞으로 오며 계산
  • 4 이하면 빼기, 6 이상이면 더하기
  • 5일때는 앞의 숫자에 따라 결정
  • 앞이 4 이하면 빼기, 5 이상이면 더하기

코드

import java.util.*;
class Solution {
    public int solution(int storey) {
        int answer = 0;
        String storeyy = Integer.toString(storey);
        char[] map = storeyy.toCharArray();

        for(int i=map.length-1 ; i>=0 ; i--){
            int now = map[i] - '0';
            if(i==0) {
                if(now == 10) answer += 1;
                else{
                    if(now <= 5) answer += now;
                    else answer += (10 - now) + 1;
                }
            }
            else if(now == 10){
                map[i-1] += 1;
            }
            else if(now >= 6) {
                answer += 10 - now;
                map[i-1] += 1;
            }
            else if(now <= 4) answer += now;
            else if(now == 5){
                answer += 5;
                if(map[i-1] - '0' >= 5) {
                    map[i-1] += 1;
                }
            }
        }
        
        return answer;
    }
}

결과

정리

  • 처음엔 bfs 접근했지만 조건문으로 해결
  • 맨 앞까지 왔을 때 조건 처리 한번에 못함
profile
안녕하세요! 개인 공부를 꾸준히 기록하는 공간입니다.

0개의 댓글