[백준]5648_역원소정렬

도경원·2023년 6월 2일
0

알고리즘스터디_C++

목록 보기
39/42
#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의 크기도 잘 숙지해야 하는 문제였다

profile
DigitalArtDeveloper

0개의 댓글