[python] 백준 2908번 / 상수

언덕·2021년 9월 17일
0

코딩테스트

목록 보기
7/8

1. 문제

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

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.


상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.


두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.



2. 나의 풀이

(1) 첫번째 풀이 (인덱스 활용)

a,b = input().split()
new_a = int(a[2]+a[1]+a[0])
new_b = int(b[2]+b[1]+b[0])
print(max(new_a, new_b))

✔ 입력받은 숫자가 세 자리수로 명시되어 있기 때문에 인덱스를 거꾸로 받아서 숫자를 뒤집어주었다. (다소 무식한 방법인듯..😇) 그런 후 max 함수를 통해 더 큰 수를 출력하도록 하였다.

✔ 위의 방법은 본 문제에서는 숫자의 자릿수가 적어서 뒤집는 것이 어렵지 않았지만, 보다 자릿수가 많은 경우에는 저런 하드코딩은 비효율적이다. 따라서 뒤집어주기 위한 새로운 방법✨이 필요하다.



(2) 두번째 풀이 (reversed() 활용 😘)

a, b = input().split()
print(max("".join(reversed(a)), "".join(reversed(b))))

✔ 내장함수 reversed()는 iterator의 요소를 역순으로 반환한다. 이때 reversed 객체를 반환하여 주므로 이를 문자열로 바꾸기 위해 ''.join을 활용해주었다.



profile
언덕의 기록들 🐾

0개의 댓글