[프로그래머스] 하샤드 수 - LV.1

지히·2022년 7월 12일
0

알고리즘

목록 보기
6/8

📑 문제 주소

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


🔥 문제 설명

주어진 정수 x가 하샤드 수인지 아닌지를 검사하여 return하는 문제이다. 여기서 하샤드 수란 자릿수의 합으로 주어진 수가 나눠지는 수를 나타낸다.


🔥 나의 풀이

level 1인 만큼 최대한 내장함수를 사용하여 짧게 구현해보려고 하였다. int 타입의 입력을 자릿수별로 나누어 list로 만들었다. 이 list의 총 합 즉, 자릿수의 합을 통해 입력된 정수가 나누어 떨어지는지 확인하여 바로 True/False를 출력하도록 하였다.

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

여기서 사용하진 않았지만 list()함수의 새로운 형태를 확인할 수 있었다. int타입의 정수를 list()함수를 사용하면 바로 정수가 string 형태로 바뀌어 하나하나 나눠져 list형태가 되었다.
위 문제에서 정수로 주어진 x를 어떻게 자릿수별로 구분할지의 고민이 있었는데 list()함수를 사용하면 더욱 편리하게 자료형을 바꿀수 있었다.


✅ 다른 사람의 풀이

역시 나보다 더 짧은 코드는 존재했다.
로직은 나와 비슷하지만 return문에서 바로 연산을 진행할 수 있다는 점을 알지 못했었다. 또한 비교 연산자의 결과를 바로 출력하도록 하여 코드의 수를 더 줄였다.

def solution(x):
   return x % sum([int(c) for c in str(x)]) == 0
profile
알고리즘 천재가 될꺼야:)

0개의 댓글