풀이 1)
문제를 보고 int 형 매개변수 x를 문자 단위로 나누고 각 문자의 합을 구한 후
x % sum == 0을 수행하면 된다고 판단했다.
using System;
using System.Linq;
public class Solution {
public bool solution(int x) {
char[] temp = x.ToString().ToCharArray();
int sum = 0;
for(int i = 0; i < temp.Length; i++)
sum += int.Parse(temp[i].ToString());
return x % sum == 0;
}
}
하지만, 위와 같이 코드를 짤 경우 형변환이 빈번하여 수행시간 측면에서
별로 안 좋은 성능을 보이는 것을 확인할 수 있었다.
풀이 2) int 형 매개변수 x를 %(나머지)와 /(나누기) 연산자를 이용해 x % sum 으로 나눠지는 확인한다.
이때, x /= 10을 수행할 경우 원본 x이 홰손되기 때문에 int temp = x를 만들어 temp를 %(나머지), /(나누기)를 수행해
원본 x가 홰손되지 않도록 해줍니다.
using System;
using System.Linq;
public class Solution {
public bool solution(int x) {
int temp = x;
int sum = 0;
do
{
sum += temp % 10;
temp /= 10;
}while(temp != 0);
return x % sum == 0;
}
}
그 결과,
위와 같이 풀이 1)에 비해 굉장히 적은 수행시간으로 문제를 해결할 수 있었다.
'문제 풀기 > C#' 카테고리의 다른 글
23. 콜라츠 추측 (1) | 2025.01.15 |
---|---|
22. 두 정수 사이의 합 (Math Class 사용 방법) (1) | 2025.01.15 |
20. 정수 내림차순으로 배치하기(정렬 함수) (0) | 2025.01.14 |
19. 정수 제곱근 판별 (0) | 2025.01.14 |
18. 문자열을 정수로 바꾸기 (0) | 2025.01.14 |