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