Post

프로그래머스 LV1 "약수의 합"

프로그래머스 Lv1 약수의 합

기초부터 다시 공부를 하기위해 프로그래머스 라는 사이트에서 코딩테스트를 LV0 부터 가능한곳까지 못하는곳은 레퍼런스를 찾아가며 풀어보려고 합니다.

매일 1개의 풀이를 하고 그 풀이에대한 나의 생각 및 해석을 적어보려합니다.

오늘은 LV1 세번째 문제 ‘약수의 합’ 문제입니다.

프로그래머스 이미지

위 이미지가 프로그래머스 코딩문제입니다.

문제는 매개변수로 정수 n이 주어지면 n의 약수를 전부 더한값을 출력하면 되는 간단한 문제입니다.

오늘 문제에서는 간단한 반복문과 조건문을 사용해 문제를 해결해보겠습니다.

그럼 오늘의 문제를 한번 풀어보겠습니다.

기본 세팅 코드도 알아보겠습니다.

1
2
3
4
function solution(n) {
  var answer = 0;
  return answer;
}

기본 세팅코드는 간단하게 n라는 매개변수를 전달하며 함수내에 answer변수를 선언해 리턴하는 기본적인 함수의 형태입니다.

오늘은 문제의 주제인 약수에 대해 한번 알아보고 문제를 해결해 보겠습니다.

약수란?

약수란 어떤 정수를 나누어 나머지가 0이 되는 다른 정수를 약수라고 합니다.

예를 들어, 6의 약수는 1, 2, 3, 6입니다. 왜냐하면 6을 1로 나누면 나머지가 0이고, 2로 나누면 나머지가 0이고, 3으로 나누면 나머지가 0이고, 6으로 나누면 나머지가 0이기 때문입니다.

약수는 양수와 음수 모두 가능하며, 0의 약수는 모든 정수입니다. 하지만 보통 우리는 양수의 약수를 주로 다룹니다.

또한, 1과 자기 자신은 모든 정수의 약수입니다. 이를테면, 1과 자기 자신만을 약수로 가지는 수를 소수라고 합니다.

약수는 수학에서 다양한 문제를 해결하는 데 필수적이며, 수의 구조와 성질을 이해하는 데 중요한 개념입니다.

이렇게 약수에 대해 한번 간단하게 알아보았습니다. 하지만 저희는 하나하나 계산할 필요 없이 반복문과 조건문으로 코드를 작성해 약수를 구해보겠습니다.

우선 반복문으로 n이하의 모든 값을 한번 출력해보겠습니다.

1
2
3
4
5
6
7
function solution(n) {
  var answer = 0;
  for(let i=0; i<=n; i++){
    console.log(i)
  }
  return answer;
}

이렇게 반복문을 작성해 n이하의 모든 값을 알아보았습니다. 그럼 이제 이 값들중 어떤것이 약수인지 구별해야합니다. 약수를 구별하기위해 저는 약수의 특징인 나머지값이 0으로 떨어지는 수들을 조건문으로 구분해 answer에 담아서 출력해보겠습니다.

1
2
3
4
5
6
7
8
9
function solution(n) {
  var answer = 0;
  for(let i=0; i<=n; i++){
    if(n%i == 0){
      answer += i;
    }
  }
  return answer;
}

조건문을 작성했습니다. 조건식은 정수n을 반복문에서 실행되는 i값으로 나눴을때 해당 값이 0이면 약수임으로, i값을 answer+=연산자로 더해주었습니다. 이렇게 하면 나머지가 0이 아닌 i는 계산을 하지 않고 넘어갈것입니다.

문제의 식이 완성되었으니 프로그래머스에 한번 확인해보겠습니다.

프로그래머스 이미지

성공이네요!

오늘은 프로그래머스 LV1 ‘약수의 합’ 문제의 대해서 알아봤습니다.

제 방법이 꼭 정답은 아니니 그저 이런방법도 있구나하고 참고용으로만 봐주시면 감사하겠습니다.

감사합니다.

This post is licensed under CC BY 4.0 by the author.