#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 함수가 존재하지만, 문제의 의도나 알고리즘 공부를 위해 위의 원리로 직접 구현하도록 하겠습니다. 
code sol.
#include <iostream>
using namespace std;

// 직접 구현한 문자열 뒤집기 함수
void my_reversed(string &s) {
  int i, l = s.length();
  int l2 = l / 2; //  문자열 중간까지만 서로 문자를 바꾸기 위해 길이 반값 계산
  char t;
  for(i = 0; i < l2; i++) { // 길이의 반만 루프돌림.
    t = s[i]; s[i] = s[l-i-1]; s[l-i-1] = t; // 한자리씩 이동하며, 앞과 뒤값을 바꿔줌
  }
}
  
int main() {
  string n1, n2;
  cin >> n1 >> n2; // 공백으로 구분해서 두 숫자문자열을 받는다.
  my_reversed(n1); // 첫 문자열을 뒤집어 준다.
  my_reversed(n2); // 둘째 문자열을 뒤집어 준다.
  if(stoi(n1) > stoi(n2))  // 정수형으로 크기를 비교해서 큰 값 출력
    cout << n1;
  else
    cout << n2; 
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.