백준 거꾸로 구구단

KIMYEONGJUN·2025년 5월 17일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 N과 K가 주어진다.
두 수는 모두 1,000보다 작거나 같은 자연수이다.

첫째 줄에 주어진 단과 항에서 나올 수 있는 가장 큰 거꾸로 구구단의 값을 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader와 StringTokenizer를 사용하여 첫 줄에서 N과 K 값을 읽어온다.
maxReversedValue 변수를 0으로 초기화하여 가장 큰 거꾸로 구구단 값을 추적한다.
1부터 K까지 반복문을 실행한다.
각 반복에서 n * i를 계산하여 원래의 구구단 결과를 얻는다.
이 결과값을 Integer.toString()을 사용하여 문자열로 변환한다.
StringBuilder를 이용하여 문자열을 뒤집고, 다시 Integer.parseInt()를 사용하여 정수로 변환한다.
이것이 '거꾸로 구구단 값'이 된다.
현재 계산된 '거꾸로 구구단 값'이 maxReversedValue보다 크면 maxReversedValue를 업데이트해준다.
반복이 끝난 후, maxReversedValue에 저장된 최종 최대값을 출력한다.
사용했던 BufferedReader는 close() 메소드를 호출하여 닫아준다.

코드로 구현

package baekjoon.baekjoon_28;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

// 백준 13410번 문제
public class Main1024 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken()); // 구구단의 단 (N)
        int K = Integer.parseInt(st.nextToken()); // 항의 수 (K)

        int maxReversedValue = 0;

        for(int i = 1; i <= K; i++) {
            int originalValue = N * i; // 원래 구구단 결과

            // 숫자를 뒤집기
            String sValue = Integer.toString(originalValue);
            StringBuilder sb = new StringBuilder(sValue);
            String reversedSValue = sb.reverse().toString();
            int reversedValue = Integer.parseInt(reversedSValue); // 뒤집은 결과값

            // 최대값 갱신
            if(reversedValue > maxReversedValue) {
                maxReversedValue = reversedValue;
            }
        }

        System.out.println(maxReversedValue);
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글