파이썬 초보 3의배수의 합을 구하는 코드

조회수 761회
num=int(input("숫자를 입력 :"))
i=1
sum=0
while i <= num:
    i=i+1
    if (i%3) != 0 :
        continue
    sum=sum+i

print("1부터",num,"까지 3의 배수의 합은 :",sum)

여기서 i가 왜 1로 초기화하는지 sum은 왜 0으로 초기화하는지 좀 알려주시길 바랍니다.

  • 질문을 제대로 이해했는지 모르겠지만. 너무 기본적인거라서 설명하기가 어려운데요. 질문자분은 왜 그렇게 한다고 생각하나요? nowp 2022.6.11 22:30

2 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    초기화가 뭔지 모르시는 거 같습니다.

    우리가 손을 꼽아 숫자를 셀 때 제일 먼저 하는 일이 뭐라고 생각하세요? 엄지를 접어서 1을 꼽는 것일까요? 아니에요. 우리가 손을 꼽아 숫자를 셀 때 제일 먼저 하는 일은 손이 있긴 한지 확인하는 것입니다. 그 다음에는 손가락이 있는지 확인하고, 그 다음에는 어느 손가락도 꼽지 않은 상태인지 확인합니다. 그런 무의식적인 확인이 끝난 다음에야 우리는 비로소 엄지를 접어서 1을 꼽기 시작할 수 있습니다. 지체장애인이 아니라면 깨닫기 어려운 의외의 진실이지요.

    이제 코드를 볼까요. 1부터 num까지 3의 배수의 합을 구하려면 제일 먼저 뭘 해야 할까요? 그냥 바로 1, 2, 3, ... 하고 숫자를 꼽으면서 확인하고 더하면 될까요? 아니에요. 뭔가의 합을 구하기 위해서 제일 먼저 해야 하는 일은 합을 저장할 변수를 선언하는 것입니다. 말하자면 손이 없던 파이썬한테 손을 주는 거에요. 그러면 파이썬은 그게 정말 손이 맞긴 한지(ex. 변수가 선언되긴 했는지), 거기에 숫자를 저장할 수 있는지(ex. 메모리 공간이 있는지)를 확인한 다음에야 비로소 1, 2, 3, ... 꼽으면서 그 변수에 숫자를 더해 줄 수 있습니다. 어? 합 말고도 또 무슨 숫자를 꼽아야 되나 보네요? 뭘 꼽는 걸까요? 파이썬은 이걸 알고 있나요? 모르겠네요. 또 손을 안 달아줬군요! 합에 더할지 말지 결정해야 하는 숫자도 파이썬이 꼽아야 하니까 변수 선언을 하나 더 해서 손을 하나 더 달아줘야겠군요.

    요컨대 초기화란 얻고자 하는 값을 실제로 얻기 직전에 그것이 가능하도록 리셋을 하는 단계입니다. 보통은 (아무 일도 안 일어났다는 뜻에서) 0, ""(빈 문자열), [](빈 리스트), None 또는 무언가의 첫번째 요소를 할당합니다. 여기서는 i=1인데 그건 왜냐하면 3의 배수 여부를 확인하는 작업은 가장 작은 자연수 1부터 수행하는 작업이라서 그래요. 그래야 파이썬이 1부터 num까지 꼽으면서 "지금 꼽은 i는 3의 배수인가?"를 할 수 있겠지요. 만약 3의 배수가 맞다면, 그걸 sum에 꼽아줄 테고요.

    설명을 너무 낮은 수준으로 드린 거 같아서 민망하네요. 이해가 되셨나요?

  • 너무 감사합니다 선생님 이런 쉬운 풀이가 필요했습니다 흑흑

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)