[프로그래머스] Lv1.하샤드 수

싱숭생숭어·2023년 4월 16일

프로그래머스

목록 보기
3/21

문제

문제 설명

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

제한 조건

1. x는 1 이상, 10000 이하인 정수입니다.

입출력 예

arrreturn
10true
12true
11false
13false

입출력 예 설명

입출력 예 #1

  • 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.

입출력 예 #2

  • 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.

입출력 예 #3

  • 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.

입출력 예 #4

  • 13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.

내 풀이

def solution(x):
    y = str(x)
    z = []
    for i in range(len(y)):
        z.append(int(y[i]))
    if x%sum(z) == 0:
        return True
    else:
        return False

다른 풀이(참고)

def solution(x):
    return x%sum(int(i) for i in str(x)) == 0

원리로는 나의 풀이와 같지만,,, 같은 풀이를 이렇게도 간결하게 표현가능하다는 점이 신기해서 가져와봤다. 나는 z라는 리스트 안에 문자형식으로 바꾼 숫자를 한자리씩 append한 반면, list에 넣지않고 그냥 바로 sum을 사용해도 되는걸 .. 이건 첨 알았다 !!!

def solution(x):
    z = (map(int, list(str(x))))
    if x%sum(z) == 0:
        return True
    else:
        return False

이 코드는 map과 list를 사용해서 별도의 변수 선언과 for문 없이 더 간결하게 표현한 코드이다. map를 잘 사용하는게 정말 한줄코딩 고수들의 특징인 거 같다 ...

저렇게 한줄코드로 구현이 가능한 고수가 되는 그날까지 아자아자 ....ㅠ.ㅠ

profile
공부합시당

1개의 댓글

comment-user-thumbnail
2023년 4월 17일

도움이 많이 됐어요. 도와주세요

답글 달기