문제를 보고 매개변수 n을 문자열로 바꾼 후, 개별적으로 int형으로 변경하고 역순으로 바꾸면 되지 않을까?
라는 생각을 했다.
using System.Linq;
public class Solution {
public int[] solution(long n) {
return n.ToString().Select(c => int.Parse(c.ToString())).Reverse().ToArray();
}
}
그래서, n.ToString()으로 long 타입 변수를 string 타입으로 변경한 후
저번 문제에서 배운 Select() 함수를 사용해 각각의 문자를 int.Parse()로 정수로 형변환해줬다.
이때, int.Parse()의 인자로 stirng 타입을 줘야 하기 때문에 매개변수 c를 ToString()으로
다시 문자를 문자열로 바꾸는 작업이 필요했다.
역순으로 바꾸기 위해서는 Reverse()함수를 통해서 순서를 바꿀 수 있었고,
다시 배열 형태로 만들어야하기 때문에 ToArray()를 사용해 정수형 배열을 만들어줬다.
하지만, 위와 같이 코드를 작성할 경우 형변환이 너무 빈번하게
사용되기 때문에 수행시간 측면에서 매우 안 좋은 결과가
나오는 것을 볼 수 있다.
그래서,
using System;
public class Solution {
public long[] solution(long n) {
int size = n.ToString().Length;
long[] answer = new long[size];
for(int i = 0; i < size; i++)
{
answer[i] = n % 10;
n /= 10;
}
return answer;
}
}
위와 같이 매개변수로 주어진 n을 문자열로 바꿔 길이를 알아낸 후,
그에 맞게 long 타입 배열 answer을 선언해주고
%(나머지)와 /(나누기)를 이용해 문제를 해결할 수 있었다.
그 결과, 비교적 적은 시간으로 문제를 해결할 수 있었다.
'문제 풀기 > C#' 카테고리의 다른 글
19. 정수 제곱근 판별 (0) | 2025.01.14 |
---|---|
18. 문자열을 정수로 바꾸기 (0) | 2025.01.14 |
16. x만큼 간격이 있는 n개의 숫자 (0) | 2025.01.13 |
15. 나머지가 1이 되는 수 찾기 (0) | 2025.01.13 |
14. 약수의 합 (Math.Sqrt(정수형)) (0) | 2025.01.13 |