[파이썬 / Algorithm] 프로그래머스 연습문제 level1 - 하샤드 수

waterlyn·2021년 12월 3일
0
post-thumbnail
post-custom-banner

문제

https://programmers.co.kr/learn/courses/30/lessons/12947

풀이

만약 주어진 값이 하샤드 수라면 각 자리의 수를 합한 값으로 주어진 값이 나누어 떨어져야 한다.

그리고 이것을 판별하는 코드를 작성하는 것이 바로 이 문제이다.

나는 각 문자열의 값을 가져오기 위해 주어진 숫자를 문자열로 변경하여 한 자리씩 다시 정수로 바꿔 누적합을 구해주는 방식으로 해결하였다 !

def solution(x):
    num = 0
    # 누적합 구하기
    for i in str(x): num += int(i)
    # 하샤드 수인가?
    if x % num == 0:
        return True
    else: return False

문제는 성공적으로 풀었지만 이것도 분명 더 간결하게 작성이 가능할 것 같았다.

return 문에서 조건문을 활용하는 방식을 다시 볼 수 있었다. 내가 작성한 코드를 한 줄로 다음과 같이 변경이 가능했다 !!

return True if x % num == 0 else False

조금 더..?

나는 단순하게 반복문을 사용하여 누적합을 구하려고 했지만 여기서 파이썬의 내장 함수를 사용하여서 구하는 것도 가능하다. 어떤 코드가 더 나은 코드인지는 사실 잘 모르겠다..!

근데 이렇게 내장함수를 사용하면 내가 작성한 코드를 단 한줄로 작성이 가능해진다.

def solution(x):
	return True if x % sum([int(n) for n in str(x)]) == 0 else False

sum 함수는 리스트 내의 모든 원소의 값을 합하여 반환하는 함수이다.

따라서 각 자리의 수를 리스트의 원소 하나씩으로 만든 후 함수를 사용하여 누적합을 구하고 나누어서 0이 되는 경우에만 True를 반환하도록 한다 !

이렇게 줄일 수 있다니 진짜 감탄했다 ~~~

profile
Hello there 🖤
post-custom-banner

0개의 댓글