본문 바로가기

카테고리 없음

[TIL_28] C# 정수 내림차순으로 배치하기, 기초 개념 추가

정수 내림차순으로 배치하기


문제 설명

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

제한 조건

n은 1이상 8000000000 이하인 자연수입니다.

코드

using System;
using System.Linq;

public class Solution {
    // solution 함수 정의
    public long solution(long n) {
        // 1. long 타입의 숫자를 문자열로 변환하고, 문자 배열로 변환
        char[] arr = n.ToString().ToCharArray();

        // 2. 문자 배열을 오름차순으로 정렬
        Array.Sort(arr);

        // 3. 정렬된 배열을 뒤집어서 내림차순으로 만듦
        Array.Reverse(arr);

        // 4. 문자 배열을 다시 문자열로 변환하고, 이를 long으로 변환
        long answer = Convert.ToInt64(new string(arr));

        // 5. 최종 결과 반환
        return answer;
    }
}

풀이

  1. 문자열로 변환
    주어진 long 타입의 숫자를 문자열로 변환. 이는 숫자를 각 자리별로 분리하기 쉽게 하기 위한 작업.

  2. 문자 배열로 변환:

문자열로 변환된 숫자를 문자 배열로 변환. 문자 배열을 사용하면 각 자릿수를 쉽게 정렬할 수 있음.

  1. 오름차순 정렬:

문자 배열을 오름차순으로 정렬. 이 단계에서는 각 자릿수가 작은 값부터 큰 값 순서로 정렬.

  1. 내림차순으로 뒤집기:
    오름차순으로 정렬된 문자 배열을 뒤집어서 내림차순으로 만듦. 이제 각 자릿수는 큰 값부터 작은 값 순서로 정렬됨.

  2. 문자열로 변환 후 다시 long으로 변환:
    뒤집어진 문자 배열을 다시 문자열로 변환하고, 이 문자열을 Convert.ToInt64를 사용하여 long 타입으로 변환

6.결과 반환:
최종적으로 내림차순으로 정렬된 숫자가 담긴 long 타입의 변수를 반환

개념 추가

값형식과 참조 형식의 차이

요약:
값형식은 해당 데이터를 직접적으로 스택메모리에 저장.
참조형식은 힙메모리에 데이터를 저장하며 스택 메모리에는 힙 메모리의 주소를 저장.

값 형식 (Value types)

  • 스택사용
  • 정적으로 메모리에 할당
  • 스택 영역에 있는 변수들은 선언된 함수를 빠져나가면 소멸.(= 블록을 닫는 괄호'}"를 만나면 소멸)
  • 위에서 뽑아먹는 종이컵처럼 처음들어간게 가장 나중에 뽑히고 나중에 들어간게 가장 먼저 뽑힌다
  • 실제 값 복사
  • 0으로 초기화

참조형식 (Reference Types)

  • 완전 이진 트리의 일종으로 우선순위 큐를 위해서 만들어진 자료 구조.

  • 동적으로 메모리에 할당

  • 힙 사용

  • 값의 참조 주소 복사

  • null로 초기화

  • 참조형은 에메랄드 색이다

힙(Heap)은 뭐야?

데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)
맨위가 첫번재 그리고 아래로 뻗어나감.

완전 이진 트리는 뭐야?

힙(Heap)과 참조 형식 (reference type)
참조형식은 힙 영역에 데이터가 저장이 되고 스택 영역에는 데이터가 저장되어 있느 힙영역의 메모리의 주소를 저장

스택 영역에서 실제로 값을 가지고 있는게 아니라 힙영역의 데이터를 참조하고 있으므로 참조 형식이라고 함