[JAVA] 하샤드 수

태로미·2023년 9월 12일
0

Programmers

목록 보기
10/29
post-thumbnail

❓문제


양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.



🚫제한


  • x는 1 이상, 10000 이하인 정수입니다.


💻입출력 예


xreturn
10true
12true
11false
13false

입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.














📝해결


자릿수 구해서 누적합

class Solution {
	public boolean solution(int x) {

		int tmp = x;
		int sum = 0; 
		int[] arr = new int[x];

		for(int i=0; i < arr.length; i++) {
			arr[i] = tmp % 10;
			tmp /= 10;
			sum += arr[i];
		}

		return x % sum == 0? true : false;
	}
}
  • 자릿수를 구하기 위해 for문을 돌리니 x의 값이 자꾸 변해서 누적합을 구할 때 온전한 x의 값이 없음.
    • 변수 tmp를 생성하여 x의 값을 저장해서 이를 연산에 사용함. (복사 개념)
  • 자릿수를 구해 int타입 배열에 하나씩 저장하고 이를 누적합하여 변수 sum에 저장.






💭마무리

  • Level_1 / 14:22
  • Point
    – 자릿수 구하기

다른사람들의 풀이를 보니 return문에 조건식을 바로 사용하여 true, false의 값을 도출하는 경우가 많았다. 그걸 보고 또 한번 ㅇ ㅏ...! 하면서 깨닫게되는...ㅎㅎㅎㅎ
정말 나를 무한한 깨달음의 세계로 인도해주는 코딩테스트네...🥹🥹🥹
그래도 이제 몇 개의 문제들을 반복하면서 자릿수 구하는 방식은 확실히 깨달은듯!


profile
Here And Now

0개의 댓글