작성
·
72
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;
}
그리고 제가 문제를 풀면서 느낀 건데 제가 수학적인 사고력이 한참이나 부족하다는 것입니다. 강의를 끝까지 시청하면서 강사님 풀이 방식을 익히다 보면 저도 수학적인 사고력이 늘 수 있을까요? 지금까지는 수학 관련된 문제만 나오면 어떻게 해야 할지 도무지 갈피를 못 잡은 적이 많아서요.
아, 그런 의미에서 이번 강의는 커뮤니티에 달아주신 내용이 정말 큰 도움이 되었습니다. 정말 감사합니다. 앞으로도 열심히 공부하겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
강의와 관련된 질문 주셔서 대단히 감사합니다. 질문자님께서 제시한 “41. 연속된 자연수의 합” 문제의 수학적 접근법에 대한 궁금증에 대하여 관련된 다른 학습자들의 질문과 지식공유자님의 답변을 통해 조금이나마 도움을 드릴 수 있도록 노력하겠습니다.
특히, 연속된 자연수의 합을 찾는 문제는 다양한 접근 방식이 있을 수 있습니다. 질문자님께서 사용하신 스택을 이용한 방법도 문제를 해결하는 하나의 유효한 방법입니다.
이와 비슷한 문제접근과 해결방식에 대해 논의된 다른 질문 중 일부를 추천드립니다. 이들 답변은 문제를 해결하는 데 다양한 관점을 제공할 수 있으며, 수학적 사고력을 키우는 데도 도움을 줄 수 있습니다.
41번 연속된 자연수의 합 문제 질문 드립니다.: 이 질문에서는 직접 구현한 코드에 대한 설명과 함께 수학적 논리를 더 적용하고자 하는 의지를 보이셨습니다. 지식공유자님은 구현력을 칭찬하며 수학적 접근을 강화하기 위한 도서 추천 등의 조언을 주셨습니다.
41번 질문있습니다!: 이 질문에서 학습자는 1부터 N까지의 합을 이용한 특정 방법으로 문제를 해결했습니다. 지식공유자님은 이러한 접근 방법도 좋은 방법이라고 언급하며 긍정적인 피드백을 제공하셨습니다.
이외에도 수학적 사고력을 증진시키기 위해서는 많은 연습과 다양한 문제를 접하는 것이 중요합니다. 지식공유자님이 추천하신 서적을 읽으며 다양한 방식으로 문제를 해결해보려는 시도도 매우 유익할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.