JAVA/Algorithm

[프로그래머스/java] 하샤드 수 (숫자 자릿수 각각 더하기)

nang. 2020. 12. 11. 10:33
반응형
SMALL

https://programmers.co.kr/learn/courses/30/lessons/12947

 

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

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

programmers.co.kr

 

  • 첫번째 방법
    • 일의자리수 구하는 방식
import java.util.*;

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        
        int sum = 0;
        int temp = x;
        
        while(temp >= 1) { // 자릿수 줄여가다가 음수되면 끝
            sum += temp % 10; // 일의자리로 하나씩 구해서 더하기
            temp /= 10; // 자릿수 줄이기
        }
        
        if(x % sum != 0) {
            return false;
        }
        
        return answer;
    }
}

 

 

 

  • 두번째 방법
    • 숫자를 문자열 취급
    • int > char
public class HarshadNumber{
    public boolean isHarshad(int num){
    
      char[] charArr = String.valueOf(num).toCharArray();
      int divisor = 0;

      for (char c : charArr) {
          divisor += (int) c - 48;
      }

      return (num % divisor == 0);
   }
}

 

 

 

  • 세번째 방법
    • 숫자를 문자열 취급
    • int > String
    • split("") 사용
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;
      }
}
반응형
LIST