[프로그래머스] 숫자의 표현
본문 바로가기
코딩 테스트 연습/Programmers

[프로그래머스] 숫자의 표현

by 은돌1113 2023. 10. 6.

문제 설명

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현하는 방법이 여러 개라는 사실을 알게 되었습니다. 예를 들어 15는 다음과 같이 4가지로 표현할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해 주세요.


제한사항

  • n은 10,000 이하의 자연수입니다.

입출력 예

n result
15 4

입출력 예 설명


입출력 예 #1

  • 문제의 예시와 같습니다.

문제풀이

  • 첫 번째 시도
    • 이중 for문을 사용하여 조건에 부합하는 경우의 수를 계산하는 코드인 데, 효율성면에서 통과되지 못하였다.
function solution(n) {
  let answer = 1;

  for (let i = 1; i < n; i++) {
    let sum = i;

    for (let j = i + 1; j < n; j++) {
      sum += j;

      if (sum === n) {
        answer++;
        break;
      }
    }
  }

  return answer;
}
  • 두 번째 시도
    • for문 안에 while문을 사용하여서 sum이 n보다 작은 경우까지만 연속된 숫자를 더해주었다.
      (🥕 while에 조건문은 해당 조건이 부합한 지 체크 후 내부 로직을 수행하기 때문에 그 점을 주의해야 한다.)
function solution(n) {
  let answer = 0;

  for (let i = 1; i <= n; i++) {
    let sum = 0;
    let j = i;

    while (sum < n) {
      sum += j;
      j++;
    }

    if (sum === n) {
      answer++;
    }
  }

  return answer;
}
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

댓글