본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 하샤드 수

by 주남2 2019. 5. 2.
반응형

문제 설명

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

 

제한 조건

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

생각

몇 번만 수를 대입해보면 금방 풀리는 문제이다. 27을 예로 들어보자, 각 자리수의 합은 2 + 7 = 9이고, 27은 9로 나누어 떨어지므로 27은 하샤드 수이다. 각 자릿수를 split해서 더해주고 그 수를 원래의 수와 나눠서, 나누어 떨어진다면 true를 아니라면 false를 반환해주면 된다. 

 

int형은 split이 안되기 때문에 String형으로 바꿔서 split을해주고 Integer.parseInt() 를 사용해 정수로 바꿔주었다.

 

코드

String x1은 정수형 x를 String로 바꿔준 것, x2는 x1을 split하여 배열에 넣어준 것이다.

이를 Integer.parseInt()를 이용해 int형 배열인 x3에 넣어주고 문제를 푼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
 
class Solution {
      public boolean solution(int x) {
          boolean answer = true;
          
          String x1 = "" + x;
          String[] x2 = x1.split("");
          int[] x3 = new int[x2.length];
          
          for(int i=0; i<x2.length; i++) {
              x3[i] = Integer.parseInt(x2[i]);
          }
          
          if(x%Arrays.stream(x3).sum()==0) {
              answer = true;
          } else answer = false;
          
          return answer;
      }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 
반응형