#52. 백준 2908번 문제 풀이: 상수 문제 원본 보기
상근이 동생 상수는 숫자를 거꾸로 읽는다. 734 893 이 적혀있으면, 437, 389로 인식해 437이 크다고 말한다. 두 수가 주어졌을 때 상수의 답을 출력하시오. 입력: 세자리 정수 A B 출력: 상수의 대답
입력/출력
--입력--
734 893
--출력--
437
--입력--
221 231
--출력--
132
--입력--
839 237
--출력--
938
문제풀이+해설
숫자를 문자열로 받고 리버스해서 숫자로 변환해서 값을 비교하면 된다.
문자열 순서를 뒤집으려면
--
문자열 앞부터 한글자씩, 끝부터 한글자씩 중간위치까지 서로 바꾸어 주면 됩니다.
s = "abc";
t = s[0]; s[0] = s[2]; s[2] =t; 처름 스왑을 해 주면 됩니다.
--
물론 파이썬이나 C++에 reversed 함수가 존재하지만, 문제의 의도나 알고리즘 공부를 위해 위의 원리로 직접 구현하도록 하겠습니다. 
파이썬에서는 두 값을 바꾸는 문법이 간단하다 a, b = b, a # a, b 두값을 서로 바꿈. 문자열을 리스트로 만드는 문법은, lst = list("문자열") # ['문','자','열'] 리스트로 만들어 준다.
code sol.
# 직접 구현한 문자열 뒤집기 함수
def my_reversed(s):
  lst = list(s) # 문자열을 글자단위로 나누어 리스트로 넘겨둔다.
  l = len(lst)
  l2 = l // 2 # 문자열 중간까지만 서로 문자를 바꾸기 위해 길이 반값 계산
  for i in range(l2): # 길이의 반만 루프돌림.
    lst[i], lst[l-i-1] = lst[l-i-1], lst[i] # 앞과 뒤값을 바꿔줌
  return "".join(lst) # 리스트를 문자열로 만들어서 리턴해 줌
  
n1, n2 = input().split()
# 공백으로 구분해서 두 숫자문자열을 받는다.
n1 = my_reversed(n1) # 문자열을 뒤집어 준다.
n2 = my_reversed(n2)
if int(n1) > int(n2): # 정수형으로 크기를 비교해서 큰 값 출력
  print(n1)
else:
  print(n2)
© 코드솔 - CodeSol. All Rights Reserved.