[프로그래머스] 약수의 합 (for)

조아연·2024년 6월 21일

JavaScript 공부

목록 보기
12/24

JavaScript 코딩테스트 약수의 합 (14일)

약수의 합

약수의 합.. 소인수분해..?
마땅한 계산식이 떠오르지 않아서 고민했다.

가장 익숙한 for문을 또 써서 해봤는데, 그래도 수식 자체는 맞은듯하다
실행은 됬다.. 다만 결과가 틀릴뿐

for문에서 실행문장을 잘 적으면 될 것 같았는데 마땅히 생각나지가 않았다.

그러다가 Chat GPT에게 슬쩍 물어봤더니 for문 안에다가 if문을 넣어서 실행문장을 적더라..! 그렇게해도 되는구나!

내 답변

for문은 저번 3일차쯤에 숙지했고 이제 그 안에 들어간 if문의 수식을 이해해봐야한다.

   for (let i = 0; i <= n; i++) {
   if (n % i === 0) {sum += i;}
   }

if문 : n을 i로 나눴을 때 나머지가 0인 경우에는 sum에 i를 더한다.

n이 5일 때
: i는 0 > 5(n)은 0(i)보다 크다 > if문에서 5를 0(i)으로 나눴을 때 0으로 나눠지지 않으니 sum에 0(i)을 더하지 않는다.
: i는 1 > 5(n)은 1(i)보다 크다 > if문에서 5을 1(i)로 나눴을 때 나머지가 0이니까 sum에 1(i)를 더해준다.
: i는 2 > 5(n)은 2(i)보다 크다 > if문에서 5를 2(i)로 나눳을 때 나머지가 1로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 3 > 5(n)은 3(i)보다 크다 > if문에서 5를 3(i)로 나눴을 때 나머지가 2로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 4 > 5(n)은 4(i)보다 크다 > if문에서 5를 4(i)로 나눴을 떄 나머지가 1로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 5 > 5는(n) 5(i)보다 크거나 같다 > if문에서 5를 5(i)로 나눴을 때 나머지가 0으로 남지 않는다. if문을 통과하여 sum(1)에 5를 더해준다.

결론적으로 sum를 리턴시키면 sum는 6이라는 결론이 나온다

다른사람 풀이

다 풀고나서 다른사람 풀이도 봤는데
i를 애초에 1로부터 지정 할 수 있더라..! 0으로는 나눠지지 않았을테니까... 이부분은 생각 못했다.

헷갈리는 점

  • === : 요 연산자는 엄격하게 비교한다는 것을 알고 있다. 값과 종류까지 본다고 하는데 정확하게 수식에 적용할 수 있는 상황이 언제인지를 판단할 수 없는 것 같다.
profile
비전공자 QA의 자기개발 공부노트

0개의 댓글