알고리즘 : 프로그래머스 : JAVA : 하샤드 수

2022. 1. 19. 14:50알고리즘/프로그래머스

반응형

<문제>


<코드 & 설명>

class Solution {
       public boolean solution(int x) {
            boolean answer = true;
            String [] strNumm = Integer.toString(x).split(""); // x값을 split을 이용해 분리
            int a = 0;
            for(int i = 0; i<strNum.length; i++) {     
                 a += Integer.parseInt(strNum[i]);   //반복문을 통해 split한 숫자를 더해 a에 넣는다.
            }
    
            if(x % a != 0){     // a를 x에 나누어 나머지 값이 0이 아니면 하샤드 수가 아니기에 false를 넣고   
                 answer = false;
            }
            return answer;    // 맞으면 하샤드 수이니 true를 리턴한다.
        }
}

1. 입출력 받은 x값을 split을 이용해 분리한다.
2. 반복문을 통해 split한 숫자를 더하여 a에 넣는다.
3. a를 x에 나눠준다.
4. 나누어 떨어지는 값이 0이 아니면 하샤드 수가 아니기에 false를 
맞으면 하샤드 수이니 true를 리턴한다.


<다른 방법>

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        int sum = 0;   // 자릿수의 합
        int n = x;   // 나누기 위해 x 값을 저장해둔다.
        
        while(x != 0){   // x가 0이 될 때 까지 각 자릿수를 추출해 더해준다.
            sum+= x % 10;
            x /= 10;
        }
       return n%sum == 0 ? true : false;    // 나누어 떨어지면 하샤드 수   
  }
}

반복문을 통해서 넘어온 값의 자릿수를 구하고 sum이라는 변수에 누계를 한다.
그 후 삼항 연산자를 통해 true, false를 반환한다.

반응형