inflearn logo
강의

Course

Instructor

Introduction to Algorithm Problem Solving for IT Employment (with C/C++): Coding Test Preparation

41. Sum of consecutive natural numbers (simple math)

41. 연속된 자연수의 합 문제 질문있습니다.

160

youch1127

4 asked

0

안녕하세요 오늘도 강의 잘 시청하고 있습니다. 좋은 강의 항상 감사드립니다.

다름이 아니라 이 문제를 수학적으로 접근하는 방법을 도무지 모르겠어서 일단 처음 풀 때는 수학에 연연하지 않고 스택을 이용해서 문제를 해결했는데 이렇게 풀어도 괜찮은 방식인지 궁금해져서 질문 드리려고 합니다.
채점 돌려봤을 땐 다 정답으로 뜨는데 혹시 제 코드에 논리적인 오류가 있을까요?

#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);

	int n;
	cin >> n;
	stack<int> table;

	for (int i = 1; i <= n / 2; i++) {
		int start = i;
		int sum = start;

		for (int j = i + 1; j <= (n / 2) + 1; j++) {
			sum += j;

			if (sum == n) {
				table.push(i);
				break;
			}
			else if (sum > n) break;
		}
	}

	int cnt = table.size();
	while (!table.empty()) {
		int start = table.top();
		int sum = start;
		cout << start;

		while (sum != n) {
			start++;
			sum += start;
			cout << " + " << start;
		}
		cout << " = " << n << "\n";

		table.pop();
	}
	cout << cnt << "\n";

	return 0;
}

그리고 제가 문제를 풀면서 느낀 건데 제가 수학적인 사고력이 한참이나 부족하다는 것입니다. 강의를 끝까지 시청하면서 강사님 풀이 방식을 익히다 보면 저도 수학적인 사고력이 늘 수 있을까요? 지금까지는 수학 관련된 문제만 나오면 어떻게 해야 할지 도무지 갈피를 못 잡은 적이 많아서요.

아, 그런 의미에서 이번 강의는 커뮤니티에 달아주신 내용이 정말 큰 도움이 되었습니다. 정말 감사합니다. 앞으로도 열심히 공부하겠습니다.

c++ 코딩-테스트

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

강의와 관련된 질문 주셔서 대단히 감사합니다. 질문자님께서 제시한 “41. 연속된 자연수의 합” 문제의 수학적 접근법에 대한 궁금증에 대하여 관련된 다른 학습자들의 질문과 지식공유자님의 답변을 통해 조금이나마 도움을 드릴 수 있도록 노력하겠습니다.

특히, 연속된 자연수의 합을 찾는 문제는 다양한 접근 방식이 있을 수 있습니다. 질문자님께서 사용하신 스택을 이용한 방법도 문제를 해결하는 하나의 유효한 방법입니다.

이와 비슷한 문제접근과 해결방식에 대해 논의된 다른 질문 중 일부를 추천드립니다. 이들 답변은 문제를 해결하는 데 다양한 관점을 제공할 수 있으며, 수학적 사고력을 키우는 데도 도움을 줄 수 있습니다.

  • 41번 연속된 자연수의 합 문제 질문 드립니다.: 이 질문에서는 직접 구현한 코드에 대한 설명과 함께 수학적 논리를 더 적용하고자 하는 의지를 보이셨습니다. 지식공유자님은 구현력을 칭찬하며 수학적 접근을 강화하기 위한 도서 추천 등의 조언을 주셨습니다.

  • 41번 질문있습니다!: 이 질문에서 학습자는 1부터 N까지의 합을 이용한 특정 방법으로 문제를 해결했습니다. 지식공유자님은 이러한 접근 방법도 좋은 방법이라고 언급하며 긍정적인 피드백을 제공하셨습니다.

이외에도 수학적 사고력을 증진시키기 위해서는 많은 연습과 다양한 문제를 접하는 것이 중요합니다. 지식공유자님이 추천하신 서적을 읽으며 다양한 방식으로 문제를 해결해보려는 시도도 매우 유익할 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

87번 채점 프로그램에 오류가 있는 것 같습니다.

0

85

2

그리디 파트

0

114

2

안녕하세요. 선생님(54번 코드 관련 문의)

0

141

2

테스트 파일 exit_coe_1, time_limit_exceeded 질문

0

142

1

C언어로 코드를 짜면 채점 시에 한 문제 빼고 시간 초과가 발생하는데 해결하는 방법이 있을까요?

0

171

1

19번 질문있습니다

0

121

1

6번 관련 채점오류입니다

0

87

2

22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?

0

164

2

dev C++ 콘솔창 바로 닫힘

0

245

1

최신화하기

0

170

1

채점이 안되요...

1

260

1

안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.

0

113

1

45번 공주구하기 문제를 list를 이용해서 이렇게 풀어도 될까요?

0

155

1

39번 두 배열 합치기 문제 채점 오류인가 코드 오류인가

0

153

0

채점기에서 틀렸다고 나오는데 이유를 모르겠습니다.

0

148

2

해당 강의에서 C언어로만 진행하는 강의 문의 건

0

143

2

87번 문제 섬나라 아일랜드 질문

0

128

1

16번 문제에서 직접 답을 대입하면 정답이 나오는데 채점에서 wrong answer가 나옵니다.

0

148

1

40번 교집합 문제

0

166

1

43번 뮤직비디오 문제 테스트케이스 4번을 만족 못합니다.

0

168

1

질문있습니다.

0

187

2

시간초과가 나요

0

169

1

43번 문제 3 ~ 5번에 문제가 있는것 같습니다.

0

243

1

43번 채점결과

0

411

2