judge855   2년 전

출력은 맞게 나오는 거 같은데 어디가 잘못됐나요?

고수님들 도와주세요

sangchoo1201   2년 전

먼저, 리스트를 만드는 과정에서 range(1, 10000)을 써서 9999까지만 리스트에 추가되었을 것 같습니다.
그리고, range를 각각 (1,101), (101,1001), (1001,10001)로 잡으셨는데, 이럴 경우 100은 세 자릿수지만 두 자릿수에 대한 연산을 하게 되고, 1000과 10000도 마찬가지입니다.
range를 바꿈으로서 해결할 수도 있을 것 같기는 한데 조금 더 좋은 방법이 있습니다.

어떤 임의의 수 n이 있을 때, "그 수의 마지막 자릿수 n%10을 결과에 더하고, n을 10으로 나눈 몫을 n에 넣고"를 0이 될 때까지 반복하면 모든 자릿수를 다 더할 수 있습니다.
그리고 굳이? 연산하는 부분을 함수로 만드실 필요는 없고 함수 없이 작성하셔도 한번 실행되기 때문에 같은 코드가 됩니다.
range(0, x)같은 경우는 range(x)로 대체하실 수 있고, 리스트를 만들 때 lst_number = [i for i in range(1, 10001)]과 같이 쓸 수 있습니다.

마지막으로 나중에 중요할 수도 있는 사실인데, 함수 바깥에서 선언한 변수를 함수 내부에서 사용하면 원하는 결과가 나오지 않는 일도 있을 수 있습니다.

저도 아직 부족하지만 이 답변이 도움이 되셨으면 좋겠습니다.

judge855   2년 전

더 간편하게 작성하는 법 잘 배워갑니다. 덕분에 문제도 잘 해결하고 가르쳐주신 걸로 한 번 더 만들어봤어요.

감사합니다~! 좋은 하루 되세요~

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