[백준 | C++] 8393.합_for문,while문

수아·2024년 8월 24일
0

codingtest

목록 보기
6/7

문제

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

정답 코드(for문)

#include <iostream>
using namespace std;

int main()
{
    int n, ans=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        ans+=i;
    }
    cout<<ans;
    return 0;
}

정답 코드(while문)

#include <iostream>
using namespace std;

int main()
{
    int n, cnt =1, total=1;
    cin>>n;
    while(cnt<n){
        cnt++;
        total +=cnt;
    }
    cout<<total;
    
    return 0;
}

for문

문득 코드를 쓰다가 for문의 기초가 흔들렸다.

for(int i =1;i<=n;i++)에서

  • 맨처음 i 가 1인가 2인가,,,
  • i<=n까지 이면 마지막 i가 n인가 n+1인가,,,

그래서 찾아봤다!
https://learn.microsoft.com/ko-kr/cpp/cpp/for-statement-cpp?view=msvc-170

이 예시를 보니 개념이 확실해졌다

  • i의 시작은 제일 첫번째 문.
  • 세번째 문의 동작은 두번째 문이 참일 때 까지!

내 틀린 코드

#include <iostream>
using namespace std;

int main()
{
    int n, ans=0;
    cin>>n;
    for(int i=0;i<n;i++){
        ans+=i;
    }
    cout<<ans;
    return 0;
}

3을 입력했을 때 6이 나와야 하는데 계속 3이 나와서 for문에 문제가 있다고 생각하고 while문을 작성한 것이었다 사실..ㅎ

i=0에서 시작한 건 사실 큰 문제가 안될 수 있으나

  • 두번째 문을 i<n을 작성하여 (n=3일때) i=2까지만 for 문 작동
  • i=0,1,2였고 따라서 ans(0) +0+1+2 =3 이 나왔던 것,,,

항상 개념부터 꼼꼼하게!

profile
이제 갓 태어난 공순

0개의 댓글

관련 채용 정보