[Lv.1] 하샤드 수

작성일     업데이트:

카테고리:

태그:

내 풀이

-> 받은 int값을 String 형태로 변환
-> split(““)으로 공백 단위로 분할하여 배열로 저장
-> for문으로 배열안의 값들을 돌리며 다시 int형으로 변환 및 총합 도출
-> 총합과 기존 값을 비교하여 true/false 값 반환

[코드보기]

class Solution {
    public boolean solution(int x) {

        String[] array = Integer.toString(x).split("");

        int sum =0;

        for(String str : array){
            int num = Integer.parseInt(str);
            sum += num;
        }

        return x % sum == 0;
    }
}


다른 사람의 풀이

다른 사람들의 풀이를 찾아보니 위처럼 String[]을 사용해도 되지만 아예 char 형태로 분리하여 사용하는 방법도 있었다.
그중 char 형태와 람다식을 혼합해 사용한 경우를 가져왔다.

Integer.toString(num).chars().forEach(char -> sum += char - '0');

String 형으로 변환 후 바로 char 형으로 분리시킨 뒤 람다식을 사용하여 총합을 구하는 함수를 만든 케이스다(sum은 위에서 따로 int형 변수로 선언 해주었다).

여기서 눈길을 끌었던 점은 람다식의 사용도 있지만 char 값에 - '0'을 해주면 바로 숫자로 변환된다는 점이었다.
나는 Integer.parseInt()를 주로 써와서인지 이런식의 형변환이 매우 신선해보여서 기록해둔다.

Programmers 카테고리 내 다른 글 보러가기

댓글남기기