NIRVANA
[level 1] 하샤드 수 본문
문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
문제 풀이 접근법1
1) n→str→list 형으로 형변환
2) map()함수를 사용하여 list의 각 원소를 int로 형변환
3) sum()를 사용하여서 리스트의 각 원소의 합을 구함
4) x를 리스트의 원소의 합(각 자릿수를 합한 값)으로 나누어서 나누어 떨어지면 True, 아니면 False를 반환
def solution(x):
answer = True
number = list(str(x))
number = list(map(int, number))
result = sum(number)
if x % result != 0:
answer = False
return answer
다른 분들 풀이
def Harshad(n):
return n%sum(int(x) for x in str(n)) == 0
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(Harshad(18))
헐 sum함수로 이렇게도 풀 수 있다니!!
list comprehension 진짜 각 잡고 한번 다시 봐야지
나도 코드 간결하게 만들고 싶다!!!
https://shoark7.github.io/programming/python/about-list-comprehension-python
'Coding test(Python3) > Programmers' 카테고리의 다른 글
[level 1] 콜라츠 추측 (0) | 2023.07.10 |
---|---|
[level 1] 두 정수 사이의 합 (0) | 2023.07.10 |
[level 1] 정수 내림차순으로 배치하기 (0) | 2023.07.09 |
[level 1] 문자열을 정수로 바꾸기 (0) | 2023.07.07 |
[level 1] 정수 제곱근 판별 (0) | 2023.07.07 |