더하기 사이클 [백준] 1110번 java

최준호·2022년 5월 3일
0

algorithm

목록 보기
37/39
post-thumbnail

문제 링크

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class B1110 {
    static int value = 0;
    static int result = 0;
    public static void main(String[] args) throws Exception{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int input = Integer.valueOf(bf.readLine().trim());
        value = input;
        sb.append(solve(input));
        System.out.println(sb);
    }
    public static String solve(int input){

        dfs(0, input);

        return String.valueOf(result);
    }
    public static void dfs(int level, int input){
        if(value == input && level != 0){
            result = level;
            return;
        }

        char[] chars = null;
        if(input>9){
            chars = String.valueOf(input).toCharArray();
        }else{
            chars = new char[2];
            chars[0] = '0';
            chars[1] = (char)(input+'0');
        }

        String newSu1 = String.valueOf(chars[1]);
        String newSu2 = String.valueOf(((Integer.valueOf(String.valueOf(chars[0])) + Integer.valueOf(String.valueOf(chars[1]))) % 10));

        dfs(level+1, Integer.valueOf(newSu1+newSu2));
    }
}

브론즈에서 dfs 문제라 재밌게 풀었는데, 풀고나서 다른 풀이들을 찾아보니 다들 그냥 반복문으로 풀더라... 굳이 이렇게까지 풀 필요는 없지만 그래도 오랜만에 dfs로 문제를 풀어서 기분은 좋았다.

그리고 좀 많이 더럽게 풀긴한거 같다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글