code kata
<정수 내림차순 배치하기>
함수 solution 은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를 들어 n이 118372면 873211을 리턴하면 됩니다.
<제한 조건>
n은 1이상 8000000000 이하인 자연수입니다.
<brainstorming>
해당 문제를 처음 보고 나서, 어떻게 접근하면 좋을지 고민하다가 어제 풀었던 문제와 비슷한 것 같아서
정수 형태인 n 을 문자형으로 바꾸고 문자의 순서를 재배치 시키는 방법을 고민해보았다.
하지만 아직 C# 에서 사용되는 문법과 함수에 미숙하고 모르는 내용이 많기 때문에
이번 문제도 한참을 고민하다 결국 구글링으로 찾아내었다..ㅠ
전에 사용하던 툴에서는 descend() 라는 함수를 사용하면 내림차순 배열이 가능했기 때문에 혹시 C#에도 내림차순 기능이
있지 않을까 생각해서 찾아보았지만 C#에서는 다른 형식의 문법구조를 가지고 있었다.
using System;
public class Solution {
public long solution(long n) {
long answer = 0;
char[] temp = n.ToString().ToCharArray();
Array.Sort(temp);
Array.Reverse(temp);
answer = long.Parse(new string(temp));
return answer;
}
}
한 줄씩 뜯어서 살펴보자면,
char[ ] temp = n.ToString().ToCharArray();
=> 자연수 n 을 문자형으로 변환하고 글자별로 나뉜 char 배열로 한꺼번에 변환한다. 하지만 애초에 문자열이 Char형태가 모여있는 상태이기 때문에 가능하다. 그렇지 않으면 다른방법을 써야 할 듯하다.
Array.Sort(temp);
=> 배열을 오름차순(ascend)으로 정렬해주는 함수이다. 잘 기억해 두도록 하자
Array.Reverse(temp);
=> 배열을 뒤집는 함수로, 결국 오름차순이던 배열을 내림차순(descend)으로 바꿔준다.
answer = long.Parse(new string(temp));
=> temp 배열을 문자열로 만든 뒤 long 형태로 변환한다.
여기서 언급된 str() 형과 char() 형에 대해서 간단히 정리하자면,
string 형태는 문자, 즉 글자들이 합쳐져서 만들어진 것. 한마디로 '문자열' 이라고 할 수 있고,
char 형태는 string형태를 이루는 한 글자 한 글자들을 각각 일컫는 말이다.
한마디로,
"팀스파르타" : str
"팀" , "스" , "파" , "르" , "타" : char
인 것이다. 이것을 구분할 줄 아는가에 대한 코딩 테스트였다. 기억해 두도록 하자.
'TIL (since 2023.08.07 ~ )' 카테고리의 다른 글
2023-09-01 TIL (조건문과 반복문 & 조건연산자) (0) | 2023.09.01 |
---|---|
2023-08-31 TIL (하샤드 수 판별) (0) | 2023.08.31 |
2023-08-29 TIL (삼항 조건 연산자와 제곱근 함수) (2) | 2023.08.29 |
2023-08-28 TIL (0) | 2023.08.28 |
2023-08-25 TIL (0) | 2023.08.25 |