문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력
첫째 줄에 상수의 대답을 출력한다.
Python풀이
문제의 핵심은 결국엔 두 숫자를 뒤집어야한다는 것이다.
처음에는 걍 노가다 반복문으로 뒤집은걸 리스트에 넣은후에 100,10,1을 각각 곱해서 숫자를 비교했다.
아래 코드가 그렇다.
a,b = map(int,input().split()) c = d = 100 a_1 = b_1 = a_2 = b_2 = 0 alist=[] blist=[] while a>0: alist.append(a%10) a//=10 blist.append(b%10) b//=10 for i in alist: a_1 = i*c c//=10 a_2+=a_1 for i in blist: b_1 = i*d d//=10 b_2+=b_1 print(max(a_2, b_2))
사실 시간초과가 터질줄 알았는데 통과됬다.
근데 코드가 너무 더러워보여서 짧게 고쳐보기로 했다.
이번엔 방식을 바꿔서 문자열을 뒤집은 다음에 int형으로 바꿔서 비교하려고 했는데 reversed로 뒤집으면 list에 밖에 넣을수가 없어서 슬라이싱으로 뒤집었다.
짧은 코드를 짜는게 목적이었기때문에 걍 print문에 max, 슬라이싱까지 다 집어 넣었다.
a,b = input().split() print(max(int(a[::-1]),int(b[::-1])))
'Emotion > 문제' 카테고리의 다른 글
백준 수 정렬하기 (0) | 2020.09.09 |
---|---|
백준 알파벳 찾기 (0) | 2020.09.09 |
백준 팩토리얼 (0) | 2020.09.02 |
백준 숫자의 합 (0) | 2020.09.02 |
백준 달팽이는 올라가고싶다, 별찍기_21 (0) | 2020.08.26 |