코딩 테스트

[코딩테스트] 백준 2908번: 상수

dev.jelee 2025. 6. 15. 17:22

# 문제

 

# 코드

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();
  }
}

 

# 입/출력 결과

 

# 과정

  1. BufferedReader 객체 생성
  2. String[] input에 입력받은 값 공백 기준으로 나누어 저장
  3. int[] nums를 input.length 크기로 생성
  4. 가장 큰 값을 구하기 위해 int max 선언 및 초기화
  5. for문 사용하여 input 값을 nums에 숫자로 형변환하여 저장
  6. for문 사용하여 reverse 계산하여 저장
    • : 각 nums의 요소들을 10으로 나눈 다음 나머지 값들을 모아서 해당 nums[i] 위치에 다시 저장
  7. for문 사용하여 가장 큰 값 구하기
    • : nums[i]가 max보다 크면 max에 저장하는 식을 사용하여 가장 큰 수 구하기
  8. max 출력하기
  9. BufferedReader .close() 해주기

 

# 메모

  • 생각보다 시간이 조금 걸렸다. reverse 시키는 부분에서 시간이 걸렸는데 10으로 나누고 나머지 값을 저장하여 reverser 시키는 방법을 알고 있어서 코드를 작성하였는데, 출력해보니 원하는 값이 안 나와서 왜 그런지 생각해보니 for문에서 조건식에 지역 변수의 값을 가지고 계산을 하다보니 원하는 결과가 안 나왔던 것이었다.
  • nums[i]의 길이로 설정해야하는데 nums[i]를 담은 num의 길이로 계산하고 있었다. num은 10으로 나눈 값이 담겨야하기 때문에 길이가 변하는데 이걸 생각을 못했던 것이다. 그래서 얼른 nums[i]의 길이로 변경했다.
  • 그래도 chat-gpt의 도움없이 해결했다.