내 블로그 목록

2018년 12월 25일 화요일

[알고리즘] Level1.하샤드 수 - 자바(java)


[문제 설명]

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

제한 조건
l  n 1 이상, 10000 이하인 정수입니다.


[나의 풀이]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

class Solution {
  public boolean solution(int x) {
      int sum = 0;
      int tmp = x;

      if(x>=1 && x<=10000){
          while(x!=0){
            sum += x%10;
            x /= 10;
          }
      }
      return tmp%sum==0;
  }
}


[다른 사람의 풀이]

(1) chars()로 분리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.function.IntConsumer;

public class HarshadNumber{
    private int sum = 0;
    public boolean isHarshad(int num){
        sum = 0;
        Integer.toString(num).chars().forEach(c -> sum += c - '0');
        return num % sum == 0;
    }

       // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        HarshadNumber sn = new HarshadNumber();
        System.out.println(sn.isHarshad(18));
    }
}

(2) int -> String -> int
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

public class HarshadNumber{
    public boolean isHarshad(int num){

    String[] temp = String.valueOf(num).split("");

    int sum = 0;
    for (String s : temp) {
        sum += Integer.parseInt(s);
    }

    if (num % sum == 0) {
            return true;
    } else {
      return false;
    }
    }

       // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        HarshadNumber sn = new HarshadNumber();
        System.out.println(sn.isHarshad(18));
    }
}









댓글 없음:

댓글 쓰기