C#으로 풀기 - 정수 내림차순으로 배치하기

Amberjack·2024년 2월 7일
0

Codekata

목록 보기
4/16
post-custom-banner

https://school.programmers.co.kr/learn/courses/30/lessons/12933

1차 풀이

일단 내가 생각한 방식은 입력받는 n을 string으로 변환한 뒤에 char[]로 바꿔서 정렬을 한 다음 char[]를 다시 string으로 변환해서 long.Parse로 answer를 return하는 방법이었다...

public class Solution {
    public long solution(long n) {
        long answer = 0;
        char[] temp = n.ToString().ToCharArray();
        
        temp.OrderByDescending();
        
        string value = temp.ToString();
        
        return answer = long.Parse(value);
    }
}

하지만 당연하게도 오류가 났다. 일단 첫 번째, temp.ToString()을 통해 string으로 변환하는 것이 불가능했다. 배열을 ToString으로 변환할 수가 없는 것 같다.
두 번째는 OrderByDescending()이 안되었던 것이다. Order()는 동작하는 데 찾아보니OrderByDescending()는 Linq에서 추출한 데이터를 대상으로 동작하는 듯하다. 아님말고,..

2차 풀이

using System;

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

그래서 열심히 뒤적거린 결과 위와 같은 방법으로 해결할 수 있었다. Array.Sort()를 통해 정렬을 한 뒤 Reverse하여 내림차순으로 정렬을 할 수 있었다. 또한 new string(temp)를 사용하여 char[]를 string으로 변환할 수 있었다.

post-custom-banner

0개의 댓글