문제 설명
양의 정수 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 |
내 풀이
map을 통해 양의 정수 x를 문자열로 바꾸어 각 요소를 int 타입으로 변환
sum을 통해 리스트 요소 값을 합함
x를 자릿수 합(digit_sum)으로 나눈 나머지가 0이면 True, 아니면 False 반환
def solution(x):
digit_sum = sum(map(int, str(x)))
return x % digit_sum == 0
다른 사람 풀이
map 을 사용하지 않고 for문을 통해 리스트 생성
def Harshad(n):
# n은 하샤드 수 인가요?
return n % sum([int(c) for c in str(n)]) == 0
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스/파이썬] 문자열을 정수로 바꾸기 (0) | 2022.09.19 |
---|---|
[프로그래머스/파이썬] 나머지가 1이 되는 수 찾기 (0) | 2022.09.19 |
[프로그래머스/파이썬] 정수 내림차순으로 배치하기 (0) | 2022.09.18 |
[프로그래머스/파이썬] 문자열 내 p와 y의 개수 (0) | 2022.09.18 |
[프로그래머스/파이썬] 자연수 뒤집어 배열로 만들기 (0) | 2022.09.18 |