Programming/Coding Test

프로그래머스 레벨1 - 하샤드 수 with Python

빠모스 2020. 3. 19. 00:44
반응형

문제 설명

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

제한 조건
x는 1 이상, 10000 이하인 정수입니다.
입출력 예
arr return
10 true
12 true
11 false
13 false


입출력 예 설명
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.

입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.

입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.

입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.

 

나의 코드

def solution (x):
    a=x
    y=[]
    while True:
        if x//10000>=1:
            y.append(x//10000)
            x=x%10000
        if x//1000>=1:
            y.append(x//1000)
            x=x%1000
        if x//100>=1:
            y.append(x//100)
            x=x%100
        if x//10>=1:
            y.append(x//10)
            x=x%10
            y.append(x)
        if x<10:
            print(a, y)
            break
    if a%sum(y)==0:
        return 'True'
    elif a%sum(y)!=0:
        return 'False'

 

코드 설명

각 자리수대로 나눈 몫이 자리수가 된다. 무한루프를 돌려서 인자로 받은 x가 1의자리수가 될때까지 자리수대로 나누고 리스트 y에 추가한다. 원래의 x였던 a를 자리수의 합으로 나눴을 때 0이면 True를, 0이 아니면 False를 리턴한다.

 

후기

나는 정수로 생각해서 이렇게 자리수대로 나눠줬지만, 다른분들은 문자열로 바꿔서 푸신 것 같다.

반응형