본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 2908번(파이썬)

by 올커 2022. 10. 9.

 

백준 2908번_파이썬 알고리즘

Q. 백준 2908. 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
(1) 입력 : 첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

(2) 출력 : 첫째 줄에 상수의 대답을 출력한다.


A. 풀이

 - 문제를 잘 이해해보면, 입력받은 숫자를 뒤집어서 읽어준 뒤 비교해주는 문제이다.

 - 입력받은 숫자를 뒤집으려면, 입력받은 숫자의 자료형을 문자 그대로 사용하여 뒤집어주는 방법이 있다.

# Q 백준 2908. 상수
num_list = input().split()

for i in range(2):
    num_list[i] = int("".join(reversed(num_list[i])))

if num_list[0] > num_list[1]:
    print(num_list[0])
else:
    print(num_list[1])

 

1) 변수 선언부

 - 사용자로부터 먼저 숫자를 두개 입력받는다. 자료형은 문자열 그대로 두고, 공백을 사용하기 위해서 input().split()을 사용하고, num_list에는 리스트형으로 저장된다.

 

2) 반복문(for문)

 - 입력받은 숫자는 모두 2개이기 때문에 반복문을 사용하여 두 개의 숫자를 거꾸로 바꾸어주여야 한다.

 - 이 때 사용한 함수는 'reversed(문자)' 이다. 'reversed()'는 사용하면 객체값을 반환한다.

 - 처리된 요소들은 리스트 안에 들어가있는 상태이기 때문에 '"".join(리스트명)'을 활용하여 문자열로 묶어준다.

 - 뒤집어진 숫자를 얻지만 아직 문자자료형 상태이다. 값을 비교하기 위해서 'int()'를 사용해주었다.

 

3) 조건문(if문)

 - 뒤집어진 두 개의 숫자를 비교하고 결과값을 출력한다.


R. 리뷰

 - 이번 문제에서는 reversed()를 사용했지만, [리스트].reverse()와 reversed([리스트])는 결과값과 용법이 다르다.

 - 별도의 정리를 통해 개념을 확실히 할 필요가 있다.

 

반응형

댓글