BOJ/정렬

[C/C++] 백준 - 5648번 : 역원소 정렬

JWonK 2021. 7. 31. 14:30
728x90
반응형

https://www.acmicpc.net/problem/5648

 

5648번: 역원소 정렬

모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요. 단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니

www.acmicpc.net

문제

모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요.

단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니다.

입력

첫 번째로 입력되는 건 n (1 ≤ n ≤ 10^6)으로 사용자가 뒤이어 입력할 원소값을 결정합니다. 입력하는 줄에는 하나의 원소값 뿐만 아니라 여러 원소값도 들어갈 수 있습니다.

단, 입력하는 정수는 10^12을 넘어선 안 됩니다.

출력

출력문은 위 문제 내용에 나와있는 정렬방법으로 정렬하여 아래 예제 출력을 참고하여 출력하세요.

 

입력받은 수를 역순으로 뒤짚고, 그 원소들의 오름차순 정렬을 출력하는 문제

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#define INF 987654321
using namespace std;

typedef long long ll;
// BOJ :: https://www.acmicpc.net/problem/5648

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.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());
		cout << "-> " << (v[i]) << '\n';
		Answer.push_back(stoll (v[i]));
	}

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

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

	return 0;
}

1. string변수 vector를 입력받고,

2. 그 문자열을 reverse함수를 통해 뒤짚는다.

3. string 헤더파일에 존재하는 stoll로 long long형태 변수로 형변환 해준다. 이렇게 형변환시켜주면 알아서 앞에 있는 0은 제거된다.

4. 이렇게 형변환 된 수를 long long변수 Answer vector에 넣어주고

5. sort함수로 Answer 벡터를 정렬해주면 답이 된다.

 

 

728x90
반응형