백준온라인저지

3062번 수 뒤집기

wonjjong 2019. 7. 18. 02:49

백준 온라인 저지 3062번 수 뒤집기


문제 출처https://www.acmicpc.net/problem/3062

 

 

3062번: 수 뒤집기

수 124를 뒤집으면 421이 되고 이 두 수를 합하면 545가 된다. 124와 같이 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는지 테스트 하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

 

 

풀이 과정

 

 문자열을 입력받고 뒤집어 줍니다.

 

 문자열을 정수로 변환해주는 atoi 함수를 사용하여 합을 구해줍니다. 이때 atoi 함수는 string이 아닌 char*을 매개변수로 받기 때문에 c_str() 함수를 사용하여 char*로 변환해야 합니다. 

 

 to_string함수를 사용하여 정수를 문자열로 다시 바꿔준 후 반복문을 통해 문자열의 앞과 뒤를 비교하여 같은지 판단합니다. 

 

 

 

 

 

소스 코드

 

#include <iostream>
#include <string>

using namespace std;

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

    int test_case;
    cin >> test_case;

    while (test_case-- > 0)
    {
        string s1;
        cin >> s1;

        string s2;
        for (int i = s1.size() - 1; i >= 0; i--)
            s2 += s1[i];

        int num = atoi(s1.c_str()) + atoi(s2.c_str());
        string ans = to_string(num);

        bool same = true;
        for (int i = 0; i < ans.size() / 2; i++)
        {
            if (ans[i] != ans[ans.size() - 1 - i])
            {
                same = false;
                break;
            }
        }

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

 

'백준온라인저지' 카테고리의 다른 글

2804번 크로스워드 만들기  (0) 2019.10.03
1238번 파티  (0) 2019.07.18
2417번 정수 제곱근  (0) 2019.07.12
1991번 트리순회  (0) 2019.01.20
1712번 손익분기점  (0) 2018.09.19