본문 바로가기
알고리즘/Baekjoon

[백준] 2908번 상수 | 파이썬 Python

by heereal 2024. 11. 7.

문제

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

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

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

 

입력

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

 

출력

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

 

예제

 

나의 풀이

a, b = map(list, input().split())
a.reverse()
b.reverse()

if int("".join(a)) > int("".join(b)):
    print("".join(a))
else:
    print("".join(b))

 

  • 상수 `a`와 `b`를 리스트 형태로 변환한다.
  • `list.reverse()`로 숫자를 역순으로 한다.
  • `join()` 함수로 리스트를 하나의 문자열로 합치고 크기를 비교한다.

 

다른 사람의 풀이

a, b = input().split()
a = int(a[::-1])
b = int(b[::-1])

if a > b:
    print(a)
else: 
    print(b)

 

  • `a`, `b`는 문자열 형태로 출력한다.
  • `문자열[시작:끝:규칙]`을 사용해서 문자열을 역순으로 바꾼다.
    • 규칙 부분에 `-1`을 넣으면 뒤에서부터 자르는 방식으로 문자열을 뒤집을 수 있다.
  • if-else문으로 정수의 크기를 비교한다.

 

문자열 슬라이싱으로 문자열 뒤집기

str = "가나다라마바사"

a = str[::1] # 가나다라마바사
b = str[::2] # 가다마사
c = str[::-1] # 사바마라다나가
d = str[::-2] # 사마다가

print(a, b, c, d)

 

  • `문자열[시작:끝]` 문자열을 앞에서부터 슬라이싱해서 새로운 문자열을 출력한다.
  • `문자열[시작:끝:규칙]` 세 번째에 슬라이싱 규칙을 추가한다. (디폴트값은 `1`)
    • 규칙에 `-1`을 넣으면 뒤에서부터 슬라이싱해서 문자열을 뒤집을 수 있다.

 

참고

댓글