n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
1부터 n까지 합을 출력한다.
#include <stdio.h>
int main()
{
int n; //입력할 변수 선언
scanf("%d", &n); //입력받기
for(int i=0; i<=n; i++)
{
printf("%d\n",n+i);
}
return 0;
}
:입력받은 n에 i의 0부터 n까지 더해져서
n+0
n+1
n+2
...
n+n
으로 출력이 된다.
-> 접근 생각이 잘못 되었다. n에 i를 더하는 방법이 아니라 i끼리 더해져야 한다.
#include <stdio.h>
int main()
{
int n; //입력할 변수 선언
scanf("%d", &n); //입력받기
for(int i=0; i<=n; i++)
{
printf("%d\n",i+i);
}
return 0;
}
: i끼리 더해지는데 0+0, 1+1, 2+2 ... 이런식으로 더해진다. 이게 아니라 i의 첫번째부터 n번째까지 더해야 한다.
-> 난 여기서 배열을 만들어 i의 첫번째부터 n번째까지 배열에 넣어줘서 각각 더하는 방법을 생각했었다. (물론 잘못됨.)
#include <stdio.h>
int main()
{
int n; //입력할 변수 선언
scanf("%d", &n); //입력받기
int N[n];
for(int i=0; i<=n; i++)
{
printf("%d\n",N[0]+N[i]);
}
return 0;
}
: n을 입력하면 (n+1)개의 0이 출력된다...
-> 사실 배열 자체를 잘 몰라서 이제 뭐가 잘못된건지도.. 구분이 안갔다. 그래도 내가 너무 어렵게 돌아가는 듯한 느낌은 들어서 다시 간단하게 생각해보자! 하고 내가 놓친 것들을 생각했다.
내가 놓친것: 더해질 때 새로 그 값을 넣어줄 변수를 선언하지 않음.
#include <stdio.h>
int main()
{
int n; //변수 n 선언
scanf("%d",&n); //n입력받기
int sum=0; //결과를 나타내 줄 변수 선언
for(int i=0; i<=n; i++)
{
sum+=i; //sum에 0부터 n까지의 값이 더해짐
}
printf("%d",sum); //sum값 출력
return 0;
}
i끼리 더하고 싶을 때는 새로운 변수를 선언하고 그 변수안에 i를 차례로 넣어주자.
sum은 0으로 초기화 필수다. -> 쓰레기 값이 들어있을 수 있으므로!
그럼 n은 왜 초기화하지 않나? -> n은 사용자로부터 입력받는 변수니깐..?(내가 생각한거)
간단한 문제였지만 나한텐 진짜 오래걸리고 완전 돌아가는 문제였다.. 결국 너무 안풀리고 어떻게 하는지 방법 자체를 몰라서 구글링의 도움을 조금 받긴 했지만, 여러모로 많이 배울 수 있는 문제였던 거 같다.