오답노트

[정렬] BOJ 5648번 역원소 정렬 본문

C,C++/코딩테스트

[정렬] BOJ 5648번 역원소 정렬

권멋져 2022. 6. 7. 17:53
https://www.acmicpc.net/problem/5648
 

5648번: 역원소 정렬

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

www.acmicpc.net

- 문제 파악

N 개의 정수가 입력된다. 이 정수를 뒤집은 수를 오름차순으로 정렬하여 출력하라

 

- 정답

정수를 모두 문자열로 받아 reverse 함수를 이용해 뒤집고 문자열을 다시 unsigned long long 으로 변환 해주었다.

 

  • 문자열에서 숫자로 바꾸는 함수들
    • stoi : string -> int
    • stoul : string  -> unsigned long
    • stoull : string  -> unsigned long long
    • stof : string  -> float
    • stod : string  -> double
    • stold : string  -> long double
  • reverse 함수
    • 함수 원형 : void reverse(const _BidIt _First, const _BidIt _Last)
    • const _BidIt _First : 시작 위치
    • const _BidIt _Last : 끝 위치
#include "bits/stdc++.h"

using namespace std;

vector<unsigned long long> vec;

int main()
{
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    
    int n;
    cin>>n;
    
    for(int i = 0 ; i < n ; i++)
    {
        string str;
        cin>>str;
        reverse(str.begin(),str.end());
        vec.push_back(stoull(str));
    }
    
    sort(vec.begin(),vec.end());
    
    for(auto a : vec)
        cout<<a<<"\n";
    
    
}