[백준 1427] 소트인사이드 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
입력으로 주어지는 숫자의 각 자릿수를 내림차순으로 정렬하는 문제입니다.
즉, 각 자릿수를 가장 큰 수부터 작은 수의 순서로 정렬하면 됩니다.
C++
의 경우 숫자를 문자열로 입력받은 후, 문자열을 내림차순으로 정렬한 후 출력합니다.
C++
의 sort()
함수는 기본적으로 오름차순 정렬이라는 점에 주의합니다.
C#
에서도 Array.Sort()
메서드와 Array.Reverse()
메서드를 활용하여 풀이할 수 있지만,
C#
의 Array.Reverse()
메서드의 시간 복잡도는 O(N)
입니다.
반면, C#
에서 LINQ
의 Enumerable.OrderByDescending()
의 시간 복잡도는 O(N logN)
으로,
Array.Reverse()
메서드를 사용하는 경우에 비해 시간 복잡도 측면에서 더 효율적입니다.
다만, Array.Reverse()
메서드는 직접 배열을 수정하므로 추가적인 메모리 할당이 필요하지 않지만,
Enumerable.OrderByDescending()
의 경우 정렬된 새로운 시퀀스를 반환하는 과정에서 추가적인 메모리 할당 과정이 생긴다는 점을 주의합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace Solution {
class Program {
static void Main(string[] args) {
var num = Console.ReadLine()!;
var sortedNum = new string(num.OrderByDescending(c => c).ToArray());
Console.WriteLine(sortedNum);
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string num; cin >> num;
sort(num.rbegin(), num.rend());
cout << num << "\n";
return 0;
}