문제링크 : 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로 정렬하고 순서대로 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 11536번] 줄 세우기 (C++) (0) | 2024.05.02 |
---|---|
[백준 14729번] 칠무해 (C++) (0) | 2024.05.01 |
[백준 2535번] 아시아 정보올림피아드 (C++) (0) | 2024.04.29 |
[백준 24417번] 알고리즘 수업 - 피보나치 수 2 (C++) (0) | 2024.04.28 |
[백준 16212번] 정열적인 정렬 (C++) (0) | 2024.04.27 |