Algorithm/프로그래머스

[프로그래머스] Level1) 하샤드 수

햄습햄 2021. 10. 10. 18:31

문제 설명

 

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

 

 

제한 조건

 

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

 


풀이 과정 (자바)

 

char형 배열인 value에 int형 x를 나눠 담았다.

그리고 그 길이만큼 for문을 돌려 하나씩 sum에 더했다.

 

만약 나눈 값이 0으로 떨어지지 않는다면 하샤드 수가 아니므로,

answer를 false로 처리했다.

(처음에 answer를 true로 초기화하여 따로 else 부분은 추가하지 않았다.

정확하게 하기 위해서는 else 부분을 추가해야 할 거 같다.)

 

 

결과

 

 


다른 사람의 풀이

 

자연수 x를 String형으로 바꾸고, ""으로 나눠서 String형 배열에 넣었다.

""으로 split 했다는 것은 문자열 한 글자씩 잘라서 넣었다는 뜻이 된다.

 

그리고 temp에 있는 값을 하나씩 꺼내 (for문_ 콜론(:))

Integer.parseInt하여 int형으로 바꿔 더했다. 

 

 

기타

 

처음에 String형 배열을 만들고 싶었으나 split하여 넣을 방법을 생각하지 못했다.

그래서 char형 배열을 만들어 처리했다.

이때, Integer.parseInt를 사용하고 싶었으나

String을 int로 변환하여 char를 넣어서 처리할 수 없었다.

Character.getNumericValue를 통해 char 값을 int로 바꿔 sum에 더해 처리했다.

문법을 잘 몰라 원하는 대로 처리하지  못했으나 다른 사람의 풀이를 보고, 스스로 학습하는 시간을 갖게 되었다.