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

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을 하지 않아도 된다는 것...

그리고 굳이 조건문을 사용하지 않아도 된다는 것

 

역시 다른사람들의 코드를 볼 때마다 많은 것을 배워가는 것 같다.

'개인활동 > 코테' 카테고리의 다른 글

백준 28279번 : 덱2  (0) 2024.06.05
백준 11866번 : 요세푸스 문제 0  (0) 2024.06.04
[프로그래머스] 평균 구하기  (0) 2024.06.01
[프로그래머스] 짝수와 홀수  (1) 2024.06.01
백준 2164번 : 카드2  (0) 2024.05.31