백준 링크
https://www.acmicpc.net/problem/5648
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
1 초 | 128 MB | 3177 | 1353 | 1137 | 42.809% |
문제
모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요.
단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니다.
입력
첫 번째로 입력되는 건 n (1 ≤ n ≤ 106)으로 사용자가 뒤이어 입력할 원소값을 결정합니다. 입력하는 줄에는 하나의 원소값 뿐만 아니라 여러 원소값도 들어갈 수 있습니다.
단, 입력하는 정수는 1012을 넘어선 안 됩니다.
출력
출력문은 위 문제 내용에 나와있는 정렬방법으로 정렬하여 아래 예제 출력을 참고하여 출력하세요.
예제 입력 1
10 5 2233
1601 90100 13009 802
50000000
301 7654321
210
예제 출력 1
5
5
12
103
109
208
1061
3322
90031
1234567
코드 풀이
이번 문제는 입력으로 주어진 문자열을 뒤집어 정수값으로 바꾼 뒤 오름차순 정렬하여 출력하는 문제입니다.
그래서 문자열을 뒤집고 정수로 변환하는 ConvertFunc() 함수를 만들고 반환된 ConvertNumb값을 벡터에 저장하여
해당 벡터를 정렬 후 출력하는 방식으로 구현했습니다.
1. n개의 반복문을 돌면서 string에 입력값을 넣은 뒤 바로 ConvertFunc() 실행
2. ConvertFunc에서 매개변수로 들어온 String값을 reverser를 이용하여 뒤집은 뒤 stoll을 이용하여 long long으로 변환 후 리턴
3. n개 전부 벡터에 저장을 했으면 sort함수를 이용하여 오름차순 정렬
4. 출력
코드
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long ConvertFunc(string& _String)
{
long long ConvertNumb = 0;
reverse(_String.begin(), _String.end());
ConvertNumb = stoll(_String);
return ConvertNumb;
}
int main()
{
int n = 0;
cin >> n;
vector<long long> vecConvertNumb(n);
for (int i = 0; i < n; ++i)
{
string S;
cin >> S;
vecConvertNumb[i] = ConvertFunc(S);
}
sort(vecConvertNumb.begin(), vecConvertNumb.end());
for (int i = 0; i < n; ++i)
{
cout << vecConvertNumb[i] << '\n';
}
return 0;
}
'백준' 카테고리의 다른 글
백준 : 11724번 연결 요소의 개수 Graph BFS(c++) (1) | 2023.08.13 |
---|---|
백준 : 9205번 맥주 마시면서 걸어가기BFS c++ (2) | 2023.07.31 |
백준 : 11055번 가장 큰 증가하는 부분 수열 (c++) (0) | 2023.07.22 |
백준 : 11727번 2xn 타일링2 dp(c++) (0) | 2023.07.21 |
백준 : 11726번 2xn 타일링 dp(c++) (0) | 2023.07.20 |
댓글