컴굥일지
[BOJ/백준 5648][C++] 역원소 정렬 본문
반응형
문제
https://www.acmicpc.net/problem/5648
문제 내용
숫자를 여러 개 입력받아, 각 숫자를 거꾸로 뒤집고, 이 숫자들을 정렬하여 출력하면 된다.
이때 주의해야 할 점은, 숫자는 10^12의 범위까지이므로 long long 자료형을 사용해야 하며, 뒤집었을 때 앞에 0이 오면 그 0은 생략해야 한다는 점이다.
문제 풀이
아래 과정을 거치면 된다.
1. 숫자를 "문자열"로 입력받는다. (숫자로 입력받아도 되지만, 어차피 문자열로 다시 바꿔야 한다.)
2. reverse()를 통해 문자열을 뒤집고, 그 문자열을 숫자로 바꾼다.
3. 배열에 집어넣는다.
각 원소별로 위의 과정을 거친 후, 배열에 모든 원소가 들어가면 정렬 후 출력하면 된다.
코드
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
long long reverseNum(string str) {
reverse(str.begin(), str.end());
return stoll(str);
}
int main() {
int n;
cin >> n;
vector<long long> arr;
string num;
for (int i = 0; i < n; i++) {
cin >> num;
arr.push_back(reverseNum(num));
}
sort(arr.begin(), arr.end());
for (int i = 0; i < n; i++)
cout << arr[i] << '\n';
}
문제 코드 설명
1. 숫자를 문자열로 바꾸는 함수
- to_string(num)
2. 문자열을 숫자로 바꾸는 함수
- str -> int : stoi(str)
- str -> double : stod(str)
- str -> long long : stoll(str)
위 두 경우 모두 <string> 헤더를 포함시켜야 한다.
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 17298][C++] 오큰등수 (0) | 2023.07.10 |
---|---|
[BOJ/백준 1874][C++] 스택 수열 (0) | 2023.07.10 |
[Programmers/프로그래머스 lv2][C++] 구명보트 (0) | 2023.07.08 |
[BOJ/백준 7795][C++] 먹을 것인가 먹힐 것인가 (0) | 2023.07.06 |
[BOJ/백준 3986][C++] 좋은 단어 (0) | 2023.07.05 |
Comments