Algorithm/Java

프로그래머스 - 하샤드 수 java

고고마코드 2022. 1. 8. 16:51
반응형
12947번 문제 - 하샤드 수

코딩테스트 연습 - 하샤드 수 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 


풀이

✅ 조건은 1~10000 사이의 자연수

1. 구하고자 하는 자연수를 각 자릿수의 합을 구하고

2. 자연수를 합으로 나누었을 때 나머지가 0이면 하샤드 수

 

예1) 152 = 1+5+2 = 8

152 / 8 = 19 ❗(하샤드 수)

 

예2) 13 = 1+3 = 4

13 / 4 = 3.25 ❗(하샤드 수 X)

 

  • 1번 풀이
public boolean solution(int x) {
	int sum = 0;
	for(int tmp=x; tmp>0; tmp/=10) {
		sum += tmp % 10;
	}
	
	return x % sum == 0;
}

int 타입 풀이

테스트 케이스 실행속도: 0.02ms

 

  • 2번 풀이
public boolean solution(int x) {
	int sum = 0;
	for(char ch : String.valueOf(x).toCharArray()) {
		sum += ch - 48;
	}
	
	return x % sum == 0;
}

char 타입 풀이

테스트 케이스 실행속도: 0.03~0.05ms

 

  • 3번 풀이
public boolean solution(int x) {
	int sum = String.valueOf(x).chars().map(ch -> ch - 48).sum();
	return x % sum == 0;
}

람다식 풀이

테스트 케이스 실행속도: 1.2~1.8ms

반응형