문제설명
입출력 예제
개념
2751번과 마찬가지로 우선순위 큐를 이용하면 쉽게 해결할 수 있다. 이전 문제와 다르게 비교자를 less<int>를 이용하면 내림차순으로 정렬된다는 점을 유념하자.
풀이
#include <iostream>
#include <queue>
int main()
{
std::priority_queue<int, std::vector<int>, std::less<int>> que;
std::string str;
std::cin >> str;
우선순위 큐를 선언하고, 숫자를 문자열로 받아준다.
for (char c : str)
{
que.push(c - '0');
}
while (!que.empty())
{
std::cout << que.top();
que.pop();
}
}
여기서 문자열로 숫자를 초기화한 이유가 나오는데, 숫자가 한 번에 입력되므로 Range-based for문을 이용해 que에 삽입하면 내림차순으로 쉽게 정렬할 수 있다. 그 후에 que가 빌 때까지 pop을 하면 문제를 해결할 수 있다.
총합본
#include <iostream>
#include <queue>
int main()
{
std::priority_queue<int, std::vector<int>, std::less<int>> que;
std::string str;
std::cin >> str;
for (char c : str)
{
que.push(c - '0');
}
while (!que.empty())
{
std::cout << que.top();
que.pop();
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 1181 단어 정렬 with C++ (0) | 2023.04.13 |
---|---|
[백준] 11650 with C++ (0) | 2023.04.12 |
[백준] 2751 with C++ (0) | 2023.04.10 |
[백준] 1929 with C++ (0) | 2023.04.06 |
[백준] 25206 with C++ (0) | 2023.04.05 |