코딩 테스트 문제/프로그래머스

하샤드 수

J520 2018. 9. 17. 20:04

문제




 이번 프로그램은 입력 받은 양의 정수가 하샤드 수인지 아닌 지를 판별해, 맞으면 true를 아니면 false를 출력하는 것이다. 하샤드 수는 어떤 수 x의 각 자릿수 숫자들의 합으로 x를 나눌 수 있는 수를 말한다. 위 문제의 예를 들어, 입력된 수가 18이면 각 자릿수의 합은 (1+8=)9이다. 18은 9로 나눌 수 있기 때문에 하샤드 수의 조건을 만족한다.

 입력 받은 수 x는 문자열로 변환한다. 그리고 정수형 배열 arr_x에 문자열을 하나씩 떼어 정수형으로 변환해 집어 넣는다. 그리고 각 자릿수의 값이 저장된 arr_x를 이용해 각 자릿수의 합을 구한다. if문을 통해 입력된 x가 하샤드 수의 조건을 만족하지 못하면, true로 초기화 되어있던 answer를 false로 바꾸어 반환한다.




실행 결과 1 :

 11을 입력했을 때의 실행 결과이다.


실행 결과 2:

 12를 입력했을 때의 실행 결과이다.


실행 결과 3:

 13을 입력했을 때의 실행 결과이다.



 이번 문제는 입력 받은 정수의 각 자릿수의 합을 구하기 위해, 정수를 어떻게 쪼개야 하는 지에 대해 고민을 했다. 그러다 문득, 예전에도 이런 비슷한 문제를 겪지 않았나 생각하다가 그때 문자열로 바꾸어서 처리했다는 것을 깨달았다.

 저번 콜라츠 추측도 그렇듯이, 하샤드 수라는 개념도 이번 문제를 풀면서 알게 되었다. 그래서 이번에도 하샤드 수에 대해 검색해 보았는데, 정보가 많지 않았다. 하샤드 수는 인도의 수학자 D. R. Kaprekar(카프레카)에 의해 정의 되었다고 한다. 그는 학교의 선생님이자 유희 수학자로 잘 알려졌다고 한다. 유희 수학은 수학을 이용한 놀이로, 스도쿠나 마방진, 한 붓 리기 같은 것들을 말한다. 하샤드 수도 숫자를 가지고 놀다가 발견한 것일까? 위키 백과에 그의 발견이 소개되어 있었는데, 그가 전체적으로 수학을 가지고 놀며 즐겁게 연구하던 사람이라는 인상을 받았다. 왠지 모르게, 호모 루덴스라는 명칭이 잘 어울리는 사람이었을 것 같다.





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

'코딩 테스트 문제 > 프로그래머스' 카테고리의 다른 글

x만큼 간격이 있는 n개의 숫자  (0) 2018.09.19
제일 작은 수 제거하기  (0) 2018.09.17
콜라츠 추측  (0) 2018.09.17
서울에서 김서방 찾기  (0) 2018.09.15
이상한 문자 만들기  (0) 2018.09.15