개인활동/코테
[프로그래머스] 하샤드 수
려우
2024. 6. 3. 08:58
반응형

하. 이 문제 좀 짜증났다. 입출력 예에 return 값이 소문자로 되어있어서 당연히 문자열로 return하였는데,
def solution(x):
if len(str(x)) == 1: return "true"
x_sum = sum(list(map(int, str(x))))
if x % x_sum: return "false"
else: return "true"

계속 위와 같이 실행한 결괏값 "false"이 기댓값 false과 다릅니다. 실행한 결괏값 "true"이 기댓값 true과 다릅니다.
이런식으로 결과가 출력되었다. 너어어어무 짜증나서 다른사람들 return값을 찾아보니 걍 아래와 같이 return하더라...
def solution(x):
if len(str(x)) == 1: return True
x_sum = sum(list(map(int, str(x))))
if x % x_sum: return False
else: return True

......그렇게 다 통과가 되었다.
def solution(x):
if len(str(x)) == 1: return True
x_sum = sum(list(map(int, str(x))))
if x % x_sum: return False
else: return True
내가 짠 코드에 대해 설명하자면, 먼저 x의 길이가 1인 경우 즉 한자리수인 경우이다. 이런 경우는 무조건 true를 반환하도록 하였고, 각 자릿수의 합을 리스트를 이용해 구하여 나머지가 0이 아니면 false를 반환하도록 하였다.
그리고 다른 사람의 코드를 보던 중 또 간과한 사실이 있었다.
def Harshad(n):
return n%sum(int(x) for x in str(n)) == 0
굳이 리스트로 sum을 하지 않아도 된다는 것...
그리고 굳이 조건문을 사용하지 않아도 된다는 것
역시 다른사람들의 코드를 볼 때마다 많은 것을 배워가는 것 같다.
반응형