안녕하세요 멍청한 토끼입니다.
이번 문제는 Lv2 카테고리에 있는
Lv2 숫자의 표현 문제 입니다.
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소입니다.
https://programmers.co.kr/learn/courses/30/lessons/12924
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
3.1 주석 없는 코드
3.2 주석 있는 코드
3.3 테스트 코드
4. 결과
1. 문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. |
|
문제!!
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. |
제한사항
|
예시
food_times | return |
15 | 4 |
42 | 4 |
8468 | 4 |
6335 | 8 |
6501 | 8 |
9170 | 8 |
2. 문제풀이
n이 15라고 하자
|
3. 소스코드
3.1 주석없는 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <string>
#include <iostream>
using namespace std;
int solution(int n) {
int answer = 0, nums = 1, sum = 0;
while (true) {
sum = 0;
for (int i = 1; i <= nums; i++) sum += i;
if (sum > n) break;
if ((n - sum) % nums++ == 0) answer++;
}
return answer;
}
|
3.2 주석있는 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <string>
#include <iostream>
using namespace std;
int solution(int n) {
//정답개수, 더하는 개수, 합
int answer = 0, nums = 1, sum = 0;
while (true) {
sum = 0;
//2개 조합부터 찾아보기
for (int i = 1; i <= nums; i++) sum += i;
//sum이 n보다 커진다면 반복문 탈출
if (sum > n) break;
//n-sum이 더하는 개수로 나누어진다면 카운트 증가
if ((n - sum) % nums++ == 0) answer++;
}
//자기자신만 더하는 방법이 있으므로 1개추가
return answer;
}
|
3.3 테스트 코드 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <string>
#include <iostream>
using namespace std;
int solution(int n) {
//정답개수, 더하는 개수, 합
int answer = 0, nums = 1, sum = 0;
while (true) {
sum = 0;
//2개 조합부터 찾아보기
for (int i = 1; i <= nums; i++) sum += i;
//sum이 n보다 커진다면 반복문 탈출
if (sum > n) break;
//n-sum이 더하는 개수로 나누어진다면 카운트 증가
if ((n - sum) % nums++ == 0) answer++;
}
//자기자신만 더하는 방법이 있으므로 1개추가
return answer;
}
void print(int n, int answer) {
int t = solution(n);
if (answer == t)
cout << "정답" << endl;
else
cout << "틀림" << endl;
}
int main() {
print(15, 4);
print(42, 4);
print(8468, 4);
print(6335, 8);
print(6501, 8);
print(9170, 8);
return 0;
}
|
4. 결과
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
디스크 컨트롤러 C++(힙,우선순위큐)[프로그래머스] (0) | 2019.11.18 |
---|---|
라면공장 C++(힙, 우선순위큐)[프로그래머스] (0) | 2019.11.17 |
문자열 압축 C++(카카오 블라인드 2020)[프로그래머스] (1) | 2019.11.15 |
후보키 C++ (카카오 블라인드 2019)[프로그래머스] (10) | 2019.11.15 |
다트게임 C++(카카오 블라인드 2018)[프로그래머스] (0) | 2019.11.15 |
댓글