Hayden's Archive
[알고리즘] 프로그래머스 : 하샤드 수 본문
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12947
내가 작성한 코드
각 자리수 * 10^n을 계속해서 뺄 것이므로 이 값을 임시로 담을 xTemp라는 변수가 필요했다. 10^n으로 나눈 몫은 quotient에 담았고 이 몫들을 합한 값들은 qTotal에 담았다.(qTotal이 모든 자릿수의 합이 된다) 그 뒤 x로 qTotal를 나누었을 때 나누어 떨어지면 answer에 true 값을 저장했는데 0으로 나누면 안 되므로 && 연산자를 써서 qTotal이 0이 아닌 조건도 추가했다.
class Solution {
public boolean solution(int x) {
boolean answer = false;
int xTemp = x;
int quotient = 0;
int qTotal = 0;
for(int i = Integer.toString(x).length()-1; i>=0; i--){
quotient = (int) (xTemp / Math.pow(10, i));
qTotal += quotient;
xTemp -= quotient * Math.pow(10, i);
}
if(qTotal !=0 && x % qTotal == 0){
answer = true;
}
return answer;
}
}
다른 사람의 코드
String 클래스의 split() 메소드에 ""을 인자값을 넣어 잘라서 향상된 for문을 돌려 합하는 것으로 모든 자릿수의 합을 구할 수도 있겠다.
String[] temp = String.valueOf(x).split("");
int sum = 0;
for (String s : temp) {
sum += Integer.parseInt(s);
}