본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12924
1.문제설명
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 이하의 자연수 입니다.
2. 문제해결 접근
- 연산될 값은 오직1씩 증가하는 숫자만 해당이된다 ( 2 + 4 X) - 반복문을 사용한다.
- 조건문을 통해 해당 조건이 만족하면, 반환할변수 result를 ++ 하여 경우의 수를 반환할 수 있다.
- 초기값을 찾는 반복문1 / 해당 초기값부터 연속된 수가 합이 n과 같은 조건을 검사하는 반복문2
- 합계를 저장하는 변수는 연산이 새롭게 될 때 마다 초기화 되어야 한다.
3.답안 : [언어 : java ]
class Solution {
public int solution(int n) {
int result = 0;
// 반복문을 사용하여 1이 증가됨에 따라 연산의 합이 n이된다.
// 조건문을 통해, 해당 조건을 만족하면 result++ 연산을 한다.
for (int i = 1; i <= n; i++) {
// 초기값을 찾는 반복문
//변수를 반복문안에 두어 연산이후 초기화를 진행한다.
int sum = 0;
for (int j = i; j <= n ; j++) {
// 초기값으로부터 합계가 n과 같을때까지 더하는 반복문
sum += j;
if( sum == n ) {
result++;
break;
} else if(sum > n) {
break;
}
}
}
return result;
}
}
4. C++ 답안
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 1;
for(int i=1;i<n;++i)
{
int number=i;
for(int j=i+1;j<n;++j)
{
number+=j;
if(number==n)
++answer;
else if(number>n)
break;
}
}
return answer;
}
'알고리즘 > [프로그래머스]Lv.2' 카테고리의 다른 글
[프로그래머스]Lv2. 다음 큰 숫자 (1) | 2022.11.02 |
---|---|
[프로그래머스]Lv2. 최솟값 만들기 (0) | 2022.11.01 |
[프로그래머스]Lv2. JadenCase 문자열 만들기 (1) | 2022.11.01 |
[프로그래머스]Lv2. 올바른 괄호 (0) | 2022.10.31 |
[프로그래머스]Lv2. 피보나치 수 (0) | 2022.10.31 |