#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
#define ll long long
vector<ll> numbers;
int main() {
int n; cin >> n;
// 입력
for (int i = 0; i < n; i++)
{
string tmp;
cin >> tmp;
reverse(tmp.begin(), tmp.end());
ll num = stoi(tmp);
numbers.push_back(num);
}
sort(numbers.begin(), numbers.end());
for (int i = 0; i < numbers.size(); i++){
cout << numbers[i]<< '\n';
}
return 0;
}
정렬문제를 푸는데 위 코드가 비주얼스튜디오에서는 결과를 올바르게 내지만 런타임에러가 발생하였다. out of range
아래는 다른 사람의 코드이다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n; cin >> n;
vector<string> v(n);
vector<ll> answer;
for (int i = 0; i < n; i++)
{
cin >> v[i];
reverse(v[i].begin(), v[i].end());
answer.push_back(stoll(v[i]));
}
sort(answer.begin(), answer.end());
for (int i = 0; i < n; i++)
{
cout << answer[i] << "\n";
}
}
//https://transferhwang.tistory.com/386
참고블로그
이 코드를 보니 stoll, string을 long long으로 바꾸는 함수가 있다는 것을 알게 되었다.
아차해서 다시 보니 long long에 넣어주면서 stoi를 사용한 것을 발견하여 그 부분만 수정하였더니 정답이었다!
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
#define ll long long
vector<ll> numbers;
int main() {
int n; cin >> n;
// 입력
for (int i = 0; i < n; i++)
{
string tmp;
cin >> tmp;
reverse(tmp.begin(), tmp.end());
ll num = stoll(tmp);
numbers.push_back(num);
}
sort(numbers.begin(), numbers.end());
for (int i = 0; i < numbers.size(); i++){
cout << numbers[i]<< '\n';
}
return 0;
}
int와 longlong의 크기도 잘 숙지해야 하는 문제였다