Dev Hyeri

◖코딩 테스트◗▬▬▬▬▬▬▬▬▬/백준

[백준] 2908 상수 (설명/코드/정답)

_hyeri 2024. 6. 24. 23:46

문제 링크 : https://www.acmicpc.net/problem/2908

 

 

 

 

1. 요구 사항 이해

시간, 메모리 제한 : 1초 / 128MB

1~9로 이루어진 세 자리 수 두개 입력

세자리 수를 역순으로 재배열

재배열한 수 중 더 큰쪽을 출력

 

 

 

2. 설계/검증 


함수화

Scanner scan = new Scanner(System.in)
String num1 = scan.next();
String num2 = scan.next();
num1 num2 역순으로 재배열
비교하여 큰쪽 출력

 

복잡도

시간 복잡도  최악의 경우  공간 복잡도
O(1)   O(1)

 

 

 

 

 

 

3. 정상 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        // 입력을 위한 객체 생성
        Scanner scan = new Scanner(System.in);

        // 세 자리 수 입력 * 2
        String A = scan.next();
        String B = scan.next();
        
        // 숫자 유효성 검사 (세 자리 수, 0 포함 x )
        if (A.length() != 3 || B.length() != 3 || A.contains("0") || B.contains("0")) {
            return;
        }

        String reversedA = new StringBuilder(A).reverse().toString();
        String reversedB = new StringBuilder(B).reverse().toString();

        int numA = Integer.parseInt(reversedA);
        int numB = Integer.parseInt(reversedB);

        if (numA > numB) {
            System.out.println(numA);
        } else {
            System.out.println(numB);
        }
        scan.close();
    }
}

 

 

 

 

 

 

추가 정리

 

 

StringBuilder 객체의 reverse() 메서드

문자열 뒤집기