#알고리즘 Q.11 : 하샤드 수
📌문제 설명:
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
📖입출력 예:
x return 10 true 11 true 12 false 13 false
풀이
🔸풀이1 해설
이전 코드카타에서 자릿수 구할 때 적용했던 식을 사용하여 문제를 품.
정수를 문자열로 변환한 후(자릿수 단위로 끊기 위해), 각각의 문자를 다시 숫자로 반환하여 합산 함.
자릿수를 더한 값은 a 변수로 받고, x에서 a를 나누어 떨어지면 true가 출력됨.
🔸풀이2 해설 (중요도 🌟🌟🌟)
마찬가지로 이전 코드카타에서 사용했던 재귀함수를 사용하였는데, 재귀함수에서 변환된 값을 받을 변수 설정이 필요하기 때문에 두 개의 함수를 만들어준다.
digit_sum(n): n의 모든 자릿수의 합을 구하는 함수
solution(x): x를 n의 값을 나누어 떨어지는지 출력하는 함수 (하샤드)
digit 함수에서 나온 값을 a 변수로 받아 풀이 1과 동일하게 출력된다.
🤷♀️후기 : (깨달음 💡*10)
이번 문제는 사실 풀이법 2번에서 막혀서 풀지 못했다가 튜터님의 도움으로 풀게 되었다.
처음에 풀이2번을 오른쪽 사진과 같이 풀었었는데,
이렇게 풀게 될 경우 조건1에서 반환한 a의 값을 받아주는 변수가 없기 때문에 조건2에서 완벽한 정답이 나오지 않는다.
🌟즉, 위의 풀이법 2번처럼 조건1과 조건2가 연계될 경우에는,
조건1의 함수 정의, 조건2 함수를 각각 정의하여,
조건2 함수에다가 조건 1의 함수를 삽입하여 조건1에서 반환된 변숫값으로 입력되게 해야 한다.