본문 바로가기

알고리즘

[백준] 2908번: 상수(java, python)

https://www.acmicpc.net/problem/2908

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net


💡주의 사항

입력받은 수 그대로가 아닌, 입력받은 수의 거꾸로(reverse)된 값으로 판단한다


🗒 풀이

java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        sc.close();

        a = Integer.parseInt(new StringBuilder().append(a).reverse().toString());
        b = Integer.parseInt(new StringBuilder().append(b).reverse().toString());

        System.out.println(Math.max(a, b));
    }
}

java의 StringBuilder에서 reverse 메서드를 지원하는 것을 사용했다. 새로운 StringBuilder 객체 생성 후, 입력받은 a, b 각각을 추가하고, 이것을 reverse() 메서드를 사용해 역순 정렬 후, 문자열로 반환한다. 그 후, 문자열인 값을 Integer.parseInt()로 정수로 변환한다.


python

 

1) reversed() 사용

a, b = map(str, input().split())
a = int(''.join(reversed(a)))
b = int(''.join(reversed(b)))
print(max([a, b]))

파이썬 리스트의 reversed 함수를 사용하여 역순으로 정렬 후, join() 함수를 사용하여 문자열로 변환한다. 그 후, int로 변환한다.

 

 

2) [::-1] 사용

a, b = input().split()
a = int(a[::-1])   # [::-1] 역순
b = int(b[::-1])
print(a if a > b else b)

리스트를 역순으로 만드는 [::-1]를 사용한다

예를 들면 lst변수에 [0, 1, 2, 3, 4, 5, 6] 이라는 값이 있을 때, lst[3::-1]의 결과값은 [3, 2, 1, 0]이다. 즉, index 3의 값 부터 역순(-1)으로 가져오는 것이다.