혜랑's STORY

[BOJ_C++] 3062번 : 수 뒤집기 본문

무지성 공부방/알고리즘 해결

[BOJ_C++] 3062번 : 수 뒤집기

hyerang0125 2021. 7. 12. 20:21

1. 문제

2. 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <stack>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int tc; cin >> tc;
    string x; 
    
    for (int T = 0; T < tc; T++) {
        cin >> x;
        string reverseX = x;
        reverse(reverseX.begin(), reverseX.end());

        int sum = stoi(x) + stoi(reverseX);
        string temp = to_string(sum);
        int flag = 1;

        for (int i = 0; i < temp.length() / 2; i++) {
            if (temp[i] != temp[temp.length() - i - 1]) {
                flag = 0; break;
            }
        }

        if (flag) cout << "YES\n";
        else cout << "NO\n";
    }

    return 0;
}
  • string으로 x를 입력받고, reverseX에도 x를 저장한다.
  • reverse() 함수를 이용하여 reverseX의 문자열을 뒤집어준다.
  • stoi() 함수를 이용하여 x와 reverseX의 값을 int형으로 바꿔 더한 값을 sum에 저장하고 그 값을 다시 string으로 변환한다.
  • for문을 돌며 문자열이 대칭인지 검사하고 대칭이라면 "YES"를 아니라면 "NO"를 출력한다.

3. 결과