[프로그래머스] 정수 내림차순으로 배치하기

김유원·2024년 1월 15일
0

📝24.01.15

🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=csharp

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

[C#] 내가 작성한 풀이

using System;
public class Solution {
    public long solution(long n) {
        long answer = 0;
        string s = n.ToString();
        char[] c = s.ToCharArray();
        Array.Sort(c);
        Array.Reverse(c);
        answer = long.Parse(new string(c));
        return answer;
    }
}

[C#] 남이 작성한 풀이

어김없이 Linq를 이용한 풀이가 있다. OrderByDescending이 내림차순 정렬인 듯 하다. string으로 변환 후 배열을 정렬하는 매커니즘은 같다.

using System.Linq;

public class Solution {
    public long solution(long n) {
        long answer = long.Parse(n.ToString().OrderByDescending(c => (int)c).ToArray());
        return answer;
    }
}

[C++] 내가, 남이 작성한 풀이

C#과 동일한 방법으로 풀었지만, 다른 점은 C++은 string 자체를 이미 문자 배열이라고 취급해준다는 점이다. 훨씬 간단한 풀이가 되었다. 남이 푼 풀이도 동일했다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

long long solution(long long n) {
    long long answer = 0;

    string str = to_string(n);
    sort(str.begin(), str.end(), greater<char>());
    answer = stoll(str);

    return answer;
}
profile
개발 공부 블로그

0개의 댓글

관련 채용 정보