NIRVANA

[level 1] 하샤드 수 본문

Coding test(Python3)/Programmers

[level 1] 하샤드 수

녜잉 2023. 7. 9. 22:42

문제

양의 정수 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

 

[Python] list comprehension에 대한 즐거운 이해

리스트를 생성하는 Python만의 독특한 문법인 list comprehension에 대해 살펴보고 다양한 예제를 만들어봅니다. 그리고 set, tuple, dict와 같은 다른 내장 자료구조에도 적용해봅니다.

shoark7.github.io