백준 9047번 6174 Java

: ) YOUNG·2024년 8월 17일
1

알고리즘

목록 보기
395/411
post-thumbnail

백준 9047번 6174 Java

https://www.acmicpc.net/problem/9047

문제



생각하기


  • 문자열, 정렬 문제이다.


동작

항상 이런 문제의 경우 문자열로 변경하거나 char[] 형태로 관리하려고 했는데,

문제에서 네 자리 수라고 정해져있는 상황에서는 정수 배열로도 풀 수 있을거라는 생각을 하지 못했다.

문제 상황에 맞도록 풀 수 있는 경험을 다져야겠다.



결과


코드


import java.io.*;
import java.util.Arrays;

public class Main {

    // input
    private static BufferedReader br;

    // variables
    private static int N;
    private static final int TARGET = 6174;

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int k = Integer.parseInt(br.readLine());
        while (k-- > 0) {
            bw.write(solve());
        }
        ;
        bw.close();
    } // End of main()

    private static String solve() throws IOException {
        StringBuilder sb = new StringBuilder();

        int num = Integer.parseInt(br.readLine());
        int ans = 0;
        while (num != TARGET) {
            int[] digits = new int[4];
            for (int i = 0; i < 4; i++) {
                digits[i] = num % 10;
                num /= 10;
            }
            Arrays.sort(digits);

            int min = 0;
            int max = 0;
            for (int i = 0; i < 4; i++) {
                min = min * 10 + digits[i];
                max = max * 10 + digits[3 - i];
            }

            num = max - min;
            ans++;
        }

        sb.append(ans).append('\n');
        return sb.toString();
    } // End of solve()
} // End of Main class

0개의 댓글