백준 1259번 [ 팰린드롬수 ]

홍수민·2023년 2월 3일
0

BAEKJOON이다

목록 보기
15/18

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

정수를 뒤집는 방법에는 여러가지가 있지만, 이번에는 나에게 좀 새로운 방법을 써보려고 한다! 아마 1학년 때는 단순히 수학적으로만 접근했던 것 같당

오늘 사용한 방법은 정수를 문자열로 만든 뒤에 뒤집고, 또 다시 정수로 바꿔주는 것이다.

이때 사용한 함수로는 'to_string'과 'atoi', 'reverse'가 있당

to_string 함수는?

int를 string 으로 바꾼다는 의미를 가지고 있으며, 숫자 타입의 데이터를 안전하게 스트링 타입으로 변경하도록 하는 함수이다. to_string(숫자); 이런 식으로 사용하면 된다.

atoi 함수는?

a - to - i 이렇게 나눌 수 있는데, char to integer이라는 의미를 가지고 있다. 즉, char 타입을 int 타입으로 변경하는 것.
atoi(char to int)가 있듯이 atof(char to double)와 atol(char to long int)도 있다.

reverse 함수는?

algorithm 헤더에 있고, 문자열의 first와 last를 뒤집는다.
reverse(문자열.begin(), 문자열.end()); 이렇게 활용하면 된당

이 세 함수를 활용하여 코드를 작성하면

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int rev(int num){
  string mun = to_string(num);
  reverse(mun.begin(), mun.end());
  return atoi(mun.c_str());
}

int main() {
  int num;

  while(1){
    cin >> num;
    
    if(num == 0){
      break;
    }

    if(num == rev(num)){
      cout << "yes" << endl;
    }
    else
      cout << "no" << endl;
  }
}

이렇게 작성할 수 있다.

rev 함수를 만들어주어서 문자열을 거꾸로 뒤집어주는 역할을 하게 해주었당

그리고 return 값을 atoi(mun.c_str())으로 적었는데, mun이라는 스트링을 char* 타입으로 변환해주기 위해 c_str()을 써주었다

앞으로도 새로운 함수 많이 찾아야징

profile
수만이다

0개의 댓글