반응형
문제 설명
양의 정수 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를 리턴한다.
후기
나는 정수로 생각해서 이렇게 자리수대로 나눠줬지만, 다른분들은 문자열로 바꿔서 푸신 것 같다.
반응형
'Programming > Coding Test' 카테고리의 다른 글
프로그래머스 레벨2 - 프린터 with Java (0) | 2020.04.03 |
---|---|
프로그래머스 레벨2 - 스킬트리 with Java (0) | 2020.04.02 |
프로그래머스 레벨1 - 실패율 (0) | 2020.03.19 |
프로그래머스 레벨1 - 콜라츠 추측 with Python (0) | 2020.03.13 |
프로그래머스 레벨1 - 이상한 문자 만들기 with Python (0) | 2020.03.13 |