https://www.acmicpc.net/problem/5648
문제
모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요.
단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니다.
입력
첫 번째로 입력되는 건 n (1 ≤ n ≤ 106)으로 사용자가 뒤이어 입력할 원소값을 결정합니다. 입력하는 줄에는 하나의 원소값 뿐만 아니라 여러 원소값도 들어갈 수 있습니다.
단, 입력하는 정수는 1012을 넘어선 안 됩니다.
std::stoi, std::stol, std::stoll
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
int stoi(const std::wstring& str, std::size_t* pos = 0, int base = 10);
// stol 함수
long stol(const std::string& str, std::size_t* pos = 0, int base = 10);
long stol(const std::wstring& str, std::size_t* pos = 0, int base = 10);
// stoll 함수
long long stoll(const std::string& str, std::size_t* pos = 0, int base = 10);
long long stoll(const std::wstring& str, std::size_t* pos = 0, int base = 10);
stoi,stol,stoll모두 문자열 혹은 wstring의 문자열 str을 base진법을 사용하는 부호 있는 정수로 바꿔준다.
문자열을 정수로 해석할 떄 , 다음의 과정을 거친다.
먼저 , 맨 앞에 붙어 있는 공백 문자들을 공백문자가 나올 떄까지 무시한다.
isspace()시 TRUE인 값이 공백문자인데, 공백문자들은 다음과 같다.
1. " " = 공백(=스페이스)
2. "\n" = 개행
3. "\t" = 수평 탭
4. "\v" = 수직 탭
5. "\f" = 피드
6. "\r" = 캐리지 리턴
출처: https://blockdmask.tistory.com/449 [개발자 지망생:티스토리]
그 후, 입력받은 문자열이 base진법으로 써진 것이라고 가정하고 읽는다.
base진법으로 가능한 것은 0,2,3, ..., 36 까지이다.
base가 2라면, 0과 1만 올 수 있고, base가 3이면 0,1,2만 올 수 있다.
base가 0이라면 다음과 같은 경우가 발생한다. 0(8진수), 0X(16진수)
->
맨 앞의 문자가 0 이면 8 진법으로, 0x 이면 16 진법으로, 그 외의 경우 그냥 10 진법 수로 생각된다.
base생략 시 기본적으로 10진법이다.
문제에서 원소를 뒤집었을떄, "00000123"이런 경우가 있을 텐데 '0'이 공백 문자인지 확인을 해야했다.
isspace('0')호출시 0을 출력하므로, 공백문자이고, stoi,stol,stoll호출시 공백문자 '0'은 무시됨을 확인할 수 있었다.
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
typedef long long ll;
using namespace std;
int main(void){
int n;
cin >> n;
vector<ll> v;
for(int i = 0;i<n;i++){
string str;
cin >> str;
reverse(str.begin(),str.end());
ll temp = stoll(str);
v.push_back(temp);
}
sort(v.begin(),v.end());
for(int i = 0;i<v.size();i++){
cout << v[i] << '\n';
}
}
'알고리즘' 카테고리의 다른 글
백준 14912 숫자 빈도수 C++ (0) | 2022.07.28 |
---|---|
백준 2660 회장뽑기 C++ (0) | 2022.07.28 |
백준 12919 A와 B 2 (0) | 2022.07.24 |
백준 11292 키 큰 사람 C++ (0) | 2022.07.22 |
백준 12933 오리 C++ (0) | 2022.07.22 |