본문 바로가기
C#/프로그래머스

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

by ian's coding 2025. 4. 21.
728x90
반응형

💻 프로그래머스 코딩 테스트 – 정수 내림차순으로 배치하기

🧩 문제 설명

주어진 자연수 n의 각 자릿수를 큰 숫자부터 정렬하여 새로운 정수를 만들어 반환하는 문제입니다.

예를 들어, n = 118372라면, 내림차순 정렬 결과는 873211이므로, 873211을 반환해야 합니다.


✔️ 제한 사항

  • n은 1 이상 8,000,000,000 이하인 자연수입니다.

🧠 문제 풀이 접근

  1. n을 문자열로 변환한 후, 문자 배열로 만듭니다.
  2. 배열을 오름차순 정렬한 뒤 역순으로 뒤집어 내림차순을 만듭니다.
  3. 다시 문자열로 합친 뒤, 숫자로 변환하여 반환합니다.

🧾 코드 설명 (C#)

using System;

public class Solution {
    public long solution(long n) {
        // 정수를 문자열로 변환 후 문자 배열로 쪼갬
        char[] c = n.ToString().ToCharArray();
        
        // 오름차순 정렬 후 뒤집기 → 내림차순 정렬 효과
        Array.Sort(c);
        Array.Reverse(c);
        
        // 다시 문자열로 만들어 숫자로 변환
        long answer = Convert.ToInt64(new string(c));
        
        return answer;
    }
}

🔍 코드 상세 분석

  • n.ToString().ToCharArray()
    → 정수를 문자열로 바꾸고 각 자릿수를 문자 배열로 분해합니다.
  • Array.Sort(c)
    → 문자 배열을 오름차순으로 정렬합니다. (예: ['3','2','1'] → ['1','2','3'])
  • Array.Reverse(c)
    → 정렬된 배열을 뒤집어서 내림차순으로 만듭니다.
  • new string(c)
    → 문자 배열을 다시 문자열로 조합합니다.
  • Convert.ToInt64(...)
    → 최종 문자열을 다시 숫자로 변환합니다.

✅ 최종 결과

이 코드는 간결하면서도 문자열 조작을 잘 활용한 예시입니다. Array.Sort() + Array.Reverse()의 조합으로 내림차순 정렬을 쉽게 구현했고, 전체 로직이 직관적이라 가독성도 좋습니다.

728x90
반응형

댓글