티스토리 뷰

백준/실버

[백준 5648번] 역원소 정렬 (C++)

게임개발기원 2024. 4. 30. 15:18

문제링크 : https://www.acmicpc.net/problem/5648

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;

int N;
string s;
vector<ll>v;

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

    cin >> N;

    while(N--)
    {
        cin >> s;
        reverse(s.begin(), s.end());
        v.push_back(stol(s)); //뒤집은 값 저장
    }

    sort(v.begin(), v.end()); //뒤집은 값 정렬

    for(int i=0; i<v.size(); i++)
    {
        cout << v[i] << "\n";
    }

    return 0;
}

 

입력받은 값에 대해 먼저 순서를 뒤집어 주고 뒤집은 값을 정렬해야하는 문제이다.

뒤집는 것을 위하여 입력자체를 문자열로 받고, 이를 reverse 함수를 통해 뒤집어주었다.

 

다시 숫자로 변환해야하는데 여기서 숫자 최대값이 10*12로 int 범위를 넘어서기 때문에 stoi 함수가 아닌 stol 함수를 사용해야 한다.

만약 stoi 함수를 쓴다면 런타임 에러인 out of range 오류를 보게 된다.

본인 또한 이를 눈치채지 못해 여러번 틀렸다.

 

이후 sort로 정렬하고 순서대로 출력해주면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함