https://school.programmers.co.kr/learn/courses/30/lessons/12947
주어진 정수 x가 하샤드 수인지 아닌지를 검사하여 return하는 문제이다. 여기서 하샤드 수란 자릿수의 합으로 주어진 수가 나눠지는 수를 나타낸다.
level 1인 만큼 최대한 내장함수를 사용하여 짧게 구현해보려고 하였다. int 타입의 입력을 자릿수별로 나누어 list로 만들었다. 이 list의 총 합 즉, 자릿수의 합을 통해 입력된 정수가 나누어 떨어지는지 확인하여 바로 True/False를 출력하도록 하였다.
def solution(x):
x_list = [int(i) for i in str(x)]
if x % sum(x_list)==0:
return True
return False
여기서 사용하진 않았지만 list()
함수의 새로운 형태를 확인할 수 있었다. int타입의 정수를 list()
함수를 사용하면 바로 정수가 string 형태로 바뀌어 하나하나 나눠져 list형태가 되었다.
위 문제에서 정수로 주어진 x를 어떻게 자릿수별로 구분할지의 고민이 있었는데 list()
함수를 사용하면 더욱 편리하게 자료형을 바꿀수 있었다.
역시 나보다 더 짧은 코드는 존재했다.
로직은 나와 비슷하지만 return문에서 바로 연산을 진행할 수 있다는 점을 알지 못했었다. 또한 비교 연산자의 결과를 바로 출력하도록 하여 코드의 수를 더 줄였다.
def solution(x):
return x % sum([int(c) for c in str(x)]) == 0