티스토리 뷰

문제 설명

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

제한 조건

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

 

💡 나의 풀이 

def solution(x):
    arr = list(str(x))
    sum_ = 0
    
    for i in range(len(arr)):
        sum_ += int(arr[i])
        if x % sum_ == 0:
            answer = True
        else:
            answer = False    
    
    return answer

 

  • 자연수 x를 string으로 치환하여 list 형식으로 arr에 담았다. 
  • 이유? 자리수를 하나씩 쪼개어 배열에 담아 더하기 위해 
  • sum_ = 0을 선언한 뒤, arr[i]의 값을 int로 치환하여 더한다. 
  • 자연수 x를 sum_으로 나눈 나머지가 0이라면 하샤드 수 이므로 answer = True, 0이 아니라면 False 

 

💡 다른 사람의 풀이 

def Harshad(n):
    # n은 하샤드 수 인가요?
    return n % sum([int(c) for c in str(n)]) == 0

 

  • 한 줄로 끝내버렸다.
  • sum함수 쓰는걸 자꾸 잊어먹는다..내 방식은 위의 코드를 풀어 쓴 것 같은 느낌 
  • str(x)하면 각 자리수가 문자열로 출력되는데 굳이 list로 왜 해줬을까..아마도 12면 '12' 이렇게 된다고 생각했던듯 
  • str(x)의 인덱스 값을 sum안에서 다 더해주고, 나눴을 때 나머지 값이 0인지를 판단
  • 아직도 java에 익숙해서 자꾸 java처럼 풀려고 하는 것 같다ㅋㅋㅋ
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31