import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ2908_v1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split("\\s+");
int[] nums = new int[input.length];
int max = 0;
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(input[i]); // 입력 받은 값 숫자로 형변환하여 nums에 저장
// reverse 계산
int num = nums[i];
String revNum = "";
for (int j = 0; j < String.valueOf(nums[i]).length(); j++) {
int temp = num % 10;
num /= 10;
revNum = revNum + temp;
}
// reverse 계산한 값 다시 저장
nums[i] = Integer.parseInt(revNum);
}
// 가장 큰 값 구하기
for (int i = 0; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
}
// 출력
System.out.println(max);
br.close();
}
}
# 입/출력 결과
# 과정
BufferedReader 객체 생성
String[] input에 입력받은 값 공백 기준으로 나누어 저장
int[] nums를 input.length 크기로 생성
가장 큰 값을 구하기 위해 int max 선언 및 초기화
for문 사용하여 input 값을 nums에 숫자로 형변환하여 저장
for문 사용하여 reverse 계산하여 저장
: 각 nums의 요소들을 10으로 나눈 다음 나머지 값들을 모아서 해당 nums[i] 위치에 다시 저장
for문 사용하여 가장 큰 값 구하기
: nums[i]가 max보다 크면 max에 저장하는 식을 사용하여 가장 큰 수 구하기
max 출력하기
BufferedReader .close() 해주기
# 메모
생각보다 시간이 조금 걸렸다. reverse 시키는 부분에서 시간이 걸렸는데 10으로 나누고 나머지 값을 저장하여 reverser 시키는 방법을 알고 있어서 코드를 작성하였는데, 출력해보니 원하는 값이 안 나와서 왜 그런지 생각해보니 for문에서 조건식에 지역 변수의 값을 가지고 계산을 하다보니 원하는 결과가 안 나왔던 것이었다.
nums[i]의 길이로 설정해야하는데 nums[i]를 담은 num의 길이로 계산하고 있었다. num은 10으로 나눈 값이 담겨야하기 때문에 길이가 변하는데 이걸 생각을 못했던 것이다. 그래서 얼른 nums[i]의 길이로 변경했다.