티스토리 뷰
문제 설명
양의 정수 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처럼 풀려고 하는 것 같다ㅋㅋㅋ
'🐍PYTHON > 알고리즘' 카테고리의 다른 글
[Python] 프로그래머스 콜라츠 추측 파이썬 코드 (0) | 2020.08.24 |
---|---|
[Python] 프로그래머스 제일 작은 수 제거하기 파이썬 코드 (0) | 2020.08.19 |
[Python] 프로그래머스 시저암호 파이썬 코드 (0) | 2020.08.19 |
[Python] 프로그래머스 완주하지 못한 선수 Level 1. 파이썬 코드 (1) | 2020.08.19 |
[Python] 프로그래머스 수박수박수박수? 파이썬 코드 (2) | 2020.08.09 |
댓글