백준 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)
'우당탕탕 파이썬 with 하루하나 알고리즘' 카테고리의 다른 글
백준 2941 파이썬 - 크로아티아 문자 개수 세기! (0) | 2022.04.11 |
---|---|
백준 5622 파이썬 - 문자의 다이얼 위치 찾기! (0) | 2022.04.10 |
백준 1152 파이썬 - 한 문장에 있는 단어의 개수 세기! (0) | 2022.04.08 |
백준 1157 파이썬 - 단어에서 가장 많이 사용된 알파벳 찾기! (0) | 2022.04.07 |
백준 2675 파이썬 - 문자열 속에 각 문자를 반복 출력하기! (0) | 2022.04.06 |