GitHubSeob
C++ / 백준 / 16496 / 큰 수 만들기 본문
문제
https://www.acmicpc.net/problem/16496
16496번: 큰 수 만들기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나
www.acmicpc.net
문제풀이
Compare함수를 만들어 조건대로 정렬하게 했다.
0을 제외한 나머지 수는 0으로 시작하지 않으며, 0이 주어지는 경우 0 하나가 주어진다.
라는 문장인데 0이 딱 한번만 주어진다는것으로 이해했다.
하지만 0이 여러개 주어질수도 있다.0이 여러개면 0만 출력하고 끝나야하지만 문제를 잘못 이해해 0의 개수만큼 0을 출력했었다.그걸 고치고 나니까 바로 맞았다.sort를 이용하여 정렬시 bool Compare함수의 조건을 걸어두었다.s1+s2의 값과 s2+s1값 중 더 큰 값으로 정렬이 되게 하였다.
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool Compare(string s1, string s2) {
return s1 + s2 > s2 + s1;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N = 0;
cin >> N;
vector<string>Arr(N,"");
int idx = 0;
for (idx = 0; idx < N; ++idx)
cin >> Arr[idx];
sort(Arr.begin(), Arr.end(), Compare);
if (Arr[0] == "0") cout << "0";
else
for (idx = 0; idx < Arr.size(); ++idx)
cout << Arr[idx];
}
'Baekjoon > Platinum' 카테고리의 다른 글
C++ / 백준 / 5670 / 휴대폰 자판 (0) | 2023.08.26 |
---|---|
C++ / 백준 / 2887 / 행성 터널 (0) | 2023.08.17 |
C++ / 백준 / 11003 / 최솟값 찾기 (0) | 2023.08.17 |
C++ / 백준 / 1422 / 숫자의 신 (0) | 2023.06.14 |
C++ / 백준 / 1517 / 버블 소트 (0) | 2021.09.01 |