LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Harshad Number" 문제입니다.
--> https://leetcode.com/problems/harshad-number/description/
문제 :
An integer divisible by the sum of its digits is said to be a Harshad number.
You are given an integer x. Return the sum of the digits of x if x is a Harshad number, otherwise, return -1.
Example 1 :
Input : x = 18
Output : 9
Explanation : The sum of digits of x is 9. 18 is divisible by 9. So 18 is a Harshad number and the answer is 9.
Example 2 :
Input : x = 23
Output : -1
Explanation : The sum of digits of x is 5. 23 is not divisible by 5. So 23 is not a Harshad number and the answer is -1.
Constraints : 1 <= x <= 100
이 문제에서 Harshad 숫자는 자신의 자릿수 합으로 나누어지는 숫자를 말합니다. 주어진 정수 x가 Harshad 숫자라면, 자릿수의 합을 반환하고, 그렇지 않다면 -1을 반환합니다. 예를 들어, 입력이 18이면 자릿수 합은 9이고 18은 9로 나누어지므로 9를 반환합니다.
class Solution {
public int sumOfTheDigitsOfHarshadNumber(int x) {
int sumOfDig = 0;
int x2 = 0;
int res = x;
while (x != 0) {
x2 = x;
x2 = x2 % 10;
sumOfDig = sumOfDig + x2;
x = x / 10;
}
if (res % sumOfDig == 0) {
return sumOfDig;
} else {
return -1;
}
}
}
코드 설명 들어갑니다 :
- 자리수 합 계산 :
- while 루프를 사용하여 각 자릿수를 추출하고 합계에 더합니다.
- x를 10으로 나누어 자리수를 줄입니다.
- Harshad 숫자 확인 및 결과 반환 :
- 원래 x 값을 저장한 res를 사용하여 자릿수 합 sumOfDig로 나누어지는지 확인합니다.
- 나누어지면 sumOfDig를 반환하고, 그렇지 않으면 -1을 반환합니다.
시간 및 공간 복잡도 :
- 시간 복잡도 :
- O(d) : 자릿수 합을 계산하는 루프는 x의 자리수에 비례하여 실행됩니다. 여기서 d는 x의 자리수입니다.
- 주어진 문제의 범위 내에서 d는 최대 3입니다(1 <= x <= 100).
- 공간 복잡도 :
- O(1) : 추가적인 배열이나 리스트를 사용하지 않고, 상수 개수의 변수만 사용하므로 공간 복잡도는 O(1)입니다.
이 코드는 주어진 정수가 Harshad 숫자인지 확인하고, 해당하는 경우 자리수 합을 반환하는 문제를 효율적으로 해결합니다. 각 자릿수를 더하여 확인한 후, Harshad 숫자 여부를 판단합니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 2810. Faulty Keyboar (0) | 2024.07.26 |
---|---|
[LeetCode] - 2894. Divisible and Non-Divisible Sums Difference (0) | 2024.07.26 |
[LeetCode] - 3136. Valid Word (0) | 2024.07.25 |
[LeetCode] - 1137. N-th Tribonacci Number (0) | 2024.07.25 |
[LeetCode] - 70. Climbing Stairs (0) | 2024.07.25 |