본문 바로가기

[BOJ] 5648. 역원소 정렬 - C++

@Xenawn2025. 7. 27. 14:00
반응형
#include <bits/stdc++.h>
using namespace std;

int main() {

	int n;
	vector <long long> v;
	cin >> n;

	for (int i = 0; i < n; i++) {
		string num;
		string sv;
		cin >> num;
		long long size = num.length();
		while(size--){
			sv += num[size];
		}
		long long digitNumber = stoll(sv);
		v.push_back(digitNumber);
	}

	sort(v.begin(), v.end());

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

 

# Tip

입력하는 수가 10¹² 이상은 안된다고 나와있다.

즉, 수가 최대 21억인 int로는 수를 담을 수 없다는 것. 그 이상인 long long을 써야한다.

나는 string의 길이를 담아 뒤 부터 새로운 string에 담아 long long으로 변환하는 stoll을 써서 push_back을 했다.

 

아래는 reverse 함수를 써서 풀이를 더 간단히 했다.

#include <bits/stdc++.h>
using namespace std;

int main() {

	int n;
	
	vector <string> v;
	vector <long long> solve;

	cin >> n;

	for (int i = 0; i < n; i++) {
		string num;
		cin >> num;
		v.push_back(num);
		reverse(v[i].begin(), v[i].end());
		long long digitNumber = stoll(v[i]);
		solve.push_back(digitNumber);
	}

	sort(solve.begin(), solve.end());

	for (int i = 0; i < n; i++) {
		cout << solve[i] << '\n';
	}
}
반응형
Xenawn
@Xenawn :: Xenawn

제넌 게임개발 블로그

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차