alorithm/programmers

[JAVA/프로그래머스] Lv1. 하샤드 수

Hannana. 2023. 4. 27. 00:28
반응형
[문제]

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

<제한 조건>
x는 1 이상, 10000 이하인 정수입니다.


<입출력 예>

arr return
10 true
12 true


<입출력 예 설명>
=> 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.

 


 

 

[풀이]

class Solution {
    public boolean solution(int x) {
        String xs = ""+x;
        int cpx = x;
        int sum = 0;
        boolean answer = true;
        for(int i=0;i<xs.length();i++){
            int val = 0;
            val = cpx%10;
            cpx = cpx/10;
            sum += val;
        }
        if(x%sum==0){
            answer = true;
        }else{
            answer = false;
        }  
        return answer;
    }
}

 

 

[다른 사람의 풀이]

public class HarshadNumber{
    public boolean isHarshad(int num){
    String [] tmp = String.valueOf(num).split("");
    int sum=0;
        for(String s:tmp) {
            sum+=Integer.parseInt(s);
        }
        if(num%sum==0) {
            return true;
        } else {
            return false;
        }
    }

나는 배열을 최대한 안쓰려고했는데 어차피 길이 구하기 위해 string 쓸거면 아예 배열을 만드는 게 나을수도 있겠다.

(% 등 불필요한 연산 없이 split 으로 나누어 for문 돌려 요소끼리 더해주면 되니까)

최대한 간결하게 쓰는 연습을 해보면 좋을 듯하다.

그래도 지난 번에 배운 int형 자릿수 더하는 방식은 잘 활용한 것 같다.

 

 

 

 

 

반응형