우당탕탕 파이썬 with 하루하나 알고리즘

백준 2908 파이썬 - 주어진 숫자를 거꾸로 저장하기

hyxndy 2022. 4. 9. 09:41

백준 2908번 - 상수 with Python

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

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

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

 

입력> 첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

출력> 첫째 줄에 상수의 대답을 출력한다.

 

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

 

2908번: 상수

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

www.acmicpc.net


이 문제에서의 핵심은 입력받은 값을 역순으로 출력해주면 된다.

입력을 받을 때, 숫자로 입력을 받게되면 숫자는 입력받아진 값을 무조건 한 뭉탱이로 보기 때문에

처음에는 문자형으로 입력을 받아야 한다. 두 숫자를 A, B로 두겠다.

A, B = input().split()

역순으로 출력하는 데에는 두가지 방법이 있다.

1. 리스트로 받아준 후 역순으로 바꿔 다시 숫자형 변환

2. 문자형에서 바로 역순으로 바꾼 뒤 숫자형으로 변환

 

나는 처음에 1번 방법을 택했지만, 생각보다 코드가 복잡해서 찾아보니 2번 방식도 있었다.

여기서는 두 가지 방법 다 소개하도록 하겠다.

 

1번 방식

C = list()
D = list()
for i in range(2,-1,-1):
    C.append(A[i])
    D.append(B[i])
    
A = int(''.join(C))
B = int(''.join(D))

for 문을 활용하여 역순으로 바꾸어 주고, join함수를 이용하여 리스트의 인자들을 다 붙여준 뒤 숫자형으로 변환했다.

 

2번 방식

A = int(A[::-1])
B = int(B[::-1])

코드가 오직 두 줄로만 나오는 것을 볼 수 있다. 매우 간단하다.

인덱스를 잘 활용하면 쉽게 구할 수 있다.

 

그러면 이제 변환을 완료했으니 더 큰 수를 출력해보자

if-else문을 사용할 것이다. 만약 A>B보다 크다면 A를 출력하고, 그렇지 않다면 B를 출력한다.

이는 1번 방식과 2번 방식 모두 동일하게 이 구문을 사용한다.

if(A > B):
    print(A)
else:
    print(B)

이렇게 해주면 끝 !!

 

<전체코드>

#1번 방식
A, B = input().split()
C = list()
D = list()
for i in range(2,-1,-1):
    C.append(A[i])
    D.append(B[i])
    
A = int(''.join(C))
B = int(''.join(D))
if(A > B):
    print(A)
else:
    print(B)
    
#2번 방식
A, B = input().split()
A = int(A[::-1])
B = int(B[::-1])

if A > B:
    print(A)
else:
    print(B)