코딩테스트 문제/Hackerrank

[HackerRank] Recursive Digit Sum

왕초보코딩러 2023. 5. 16. 23:36
728x90

내용: 

입력값

알고리즘:

숫자 n을 k번 반복한 수의 각 자리 수 합을 구한다(n의 각 자리 수 합*k와 동일)

그 수가 10보다 작은 한 자리 수의 경우 리턴

아니면 한 번 더 superDigit을 시행하여 한 자리 수가 나올 때까지 반복

 

def superDigit(n, k):
    n=int(n)	#문자열인 n을 정수로 변환
    sum=0
    
    while n>0:	
        sum+=n%10
        n=int(n//10)
    n=sum*k

    if n<10:	#재귀함수
        return n
    else:
        return superDigit(n,1)

 

마지막에 return 없이 superDigit(n,1)만 써서 None이 계속 나왔었습니다

꼭 return 써주기

 

참고자료

재귀함수에 return 사용하지 않으면 None이 나오는 이유 

https://velog.io/@munang/%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-Python-None-%EB%A6%AC%ED%84%B4%ED%95%98%EB%8A%94-%EA%B2%BD%EC%9A%B0-%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98-None-%EB%A6%AC%ED%84%B4

 

[개념 정리] Python None 리턴하는 경우 / 재귀함수 None 리턴

예상 대진표 문제를 풀이하다가 만나게 된 문제, 정확히 알지 못해서 기본적인 개념이지만 정확하게 정리해두려고 한다.파이썬에서 함수가 return문이 없어도 되고, 없으면 리턴 없이 끝나는 줄

velog.io

 

 

사실 뭐가 다른 지 모르겠지만 문제가 안풀린다면 둘을 바꿉시다

https://www.acmicpc.net/board/view/91635

 

글 읽기 - python a//b 와 int(a/b)의 차이

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

'코딩테스트 문제 > Hackerrank' 카테고리의 다른 글

[HackerRank] New Year Chaos  (0) 2023.05.27
[HackerRanck] Grid Challenge  (0) 2023.05.15
[HackerRank] Caesar Cipher  (0) 2023.05.15