import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(in.readLine());
int x = N;
//싸이클 카운 횟수
int cnt = 0;
while (true) {
int q = x / 10; // 십의 자리
int r = x % 10;
int sum = q + r;
x = r * 10 + sum % 10;
cnt++;
if(x == N) {
break;
}
}
out.write(cnt + "\n");
out.flush();
out.close();
in.close();
}
}
다른 예제를 보니 출력스트림을 사용하는 경우가 있어,
이게 더 빠른가 하고 사용해봤는데,
오히려 더 느렸다. 아직 이유는 모르겠지만,
입력받는 스트림만 사용해야 겠다.
이 문제에서 이상했던 점은 변수명이 살짝 길었다고,
시간 초과가 났다는 것인데,
이상하게 변수명을 줄이니 시간 초과가 나타나지 않았다.
변수명이 미치는 영향이 이렇게 큰 건가?.. 이 부분은 더 알아보아야겠다.
11818
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] arr = new int[N];
int cnt = 0;
while (true) {
arr[cnt] = Integer.parseInt(st.nextToken());
cnt++;
if(N == cnt) break;
}
int max = Arrays.stream(arr).max().getAsInt();
int min = Arrays.stream(arr).min().getAsInt();
System.out.print(min + " " + max);
}
}