백준 2908번 풀이

문제

세자리 수 두 개를 입력하면 그 수를 거꾸로 뒤집은 다음 큰 수를 출력하는 문제. 에헤이 개초보인 나도 풀었는데 님들도 할 수 있음. 판다스에 바이오파이썬까지 굴리면서 무슨 개초보야 텐서플로우 못쓰는데요 아니 그건 걔가 특수한거지

풀이

일단 본격적인 풀이에 들어가기 앞서, 한가지 보고 갈 코드가 있다.

a=input("입력해주세요 \n")
a=a.lower() # 영어일 경우 전부 소문자로
a=a.replace(" ","") # 공백이 있을 경우 공백을 붙여버림

if a == a[::-1]:
    print(True)
else:
    print(False)
# 그래서 짜잔 나왔다

이 코드는 어떤 문장이 회문인지를 판별하는 코드이다. 회문이란, 거꾸로 써도 똑같은 문장… 그러니까 기러기, 스위스, 토마토같은 것이다. 여보 안경 안보여도 회문. 사실 이 문제가 쉬웠던 것도 이걸 미리 해 본 덕분. 아무튼, 그래서 여기서 뭘 갖다 쓸거냐…

a[::-1]

이거다. 이게 뭔지는 풀이 들어가면서 알려드림.

import sys
a,b=sys.stdin.readline().strip().split(" ")
print(a,b)

입력은 역시 역사와 전통의 5G-LTE급 sys.stdin.readline()이다. strip()은 sys.stdin.readline()이 특성상 뒤에 공백이 붙는데 그거 떼려고 넣은거고, split()이 본론. 아무튼 이렇게 하면 입력은 되는데요… 그럼 어떻게 뒤집죠?

a[::-1]

이거요. 참고로 회문 판독 코드에서 if문 조건에 들어가 있다는 걸 알면 금방 유추할 수 있다.

import sys
a,b=sys.stdin.readline().strip().split(" ")
a_num=int(a[::-1])
b_num=int(b[::-1])
if a_num > b_num:
    print(a_num)
else: 
    print(b_num)

출력은 그냥 얘랑 쟤랑 애가 크면 얘 아니면 쟤 뽑으면 된다.