본문 바로가기

C 언어

백준으로 배우는 C 언어 16. 합

저번에 지나가는 얘기로 for 문 안에서 생성된 변수는 for 문 안에서만, 즉 밖에서 사용할 수 없다고 설명했었습니다. 그럼에도 불구하고 외부에서 사용해야 할 때가 종종 있는데요, 이번 문제 역시 그런 케이스입니다. 이럴 땐 어떻게 해야 할까요?


 

백준으로 배우는 C 언어 14. 구구단

백준 단계별 풀어보기의 3 번째 단계입니다! 이번 단계에서는 for 문을 배울 건데요, if 문과 마찬가지로 프로그래밍을 할 때 가장 많이 사용되는 함수 중 하나입니다. for 문은 반복문이라고도 하는데요, 특정..

torotoblog.tistory.com

 

백준으로 배우는 C 언어 15. A + B - 3

저번 문제에서 for 문을 어떻게 사용하는지에 대해서 배웠습니다! 그러면 이제 응용을 해 봐야겠죠. scanf와 printf만 사용하면 되는 간단한 문제이기 때문에 금방 할 수 있을 겁니다. 백준으로 배우는 C 언어 13..

torotoblog.tistory.com


이번 문제 (#8393)에서는 숫자를 입력받으면 1부터 n까지의 합을 구하는 프로그램을 작성해야 합니다. for 문을 어떻게 활용해야 하는지 대충 감이 오시나요? 바로 코드를 살펴보시죠.

#include <stdio.h>

int main(void) {
    int a;
    int b = 0;
    scanf("%d", &a);
    
    for (int i = 1; i <= a; i++) {
        b += i;
    }
    
    printf("%d\n", b);
    return 0;
}

저번 문제들과는 달리 이번에는 변수를 for 문 밖에서 선언했고 값도 바로 정해 주었습니다. scanf 함수를 통해서 무조건 값을 받을 수 있는 a와는 달리 위 코드처럼 값을 할당해 주지 않는다면 상황에 따라서(a가 1 보다 작을 때) b는 값을 아예 할당받지 못할 수도 있기 때문이죠. 값을 못 받게 되면 나중에 printf 함수에서 b를 출력할 때 문제가 생기기 때문에 확실하게 값을 할당받을 수 없을 때는 항상 변수를 선언하면서 값을 할당해 주어야 합니다. 

이번 문제에서는 출력을 한 번만 해야 합니다. for 문 안에서 printf 함수를 사용하면 반복하는 수만큼 출력을 하기 때문에 for 문 밖에서 사용해야 하는데, 아까 얘기한 듯이 for 문 안에서 선언된 변수는 밖에서 사용할 수 없습니다. 만약 b를 밖이 아니라 for 문 안에서 선언했다면 나중에 printf 함수가 b라는 변수를 찾지 못해서 출력을 할 수가 없죠. 그렇기 때문에 이런 경우에는 외부에서 변수를 선언하고, for 문에서 사용한 뒤, 외부에서 다시 사용해야 합니다. 외부에서 생성된 변수는 for 문 내에서도 얼마든지 사용할 수 있기 때문이죠.

for (int i = 1; i <= a; i++) {
    b += i;
}

1부터 n까지 더해야 하기 때문에 매번 1씩 증가하는 i를 활용하면 간단합니다. 다만 1부터 시작해야 하기 때문에 i를 1로 설정해 두고, n까지 되기 위해서 조건식을 i <= a로 설정해야 합니다. 이 부분만 조심한다면 나머지는 쉽게 이해하실 수 있을 겁니다.

테스트를 해 봅시다! 실행을 한 뒤 숫자를 입력하면 성공적으로 1부터 그 숫자까지의 합을 출력하네요.

백준으로 돌아와서 언어를 C로 설정한 뒤 제출을 해 줍시다.

성공!

다음 문제, 빠른 A + B(#15552)는 전에 했었던 A+B-3과 똑같고, 그다음 문제인 N 찍기(#2741)도 조금만 고민하고 배운 것들을 응용하면 풀 수 있는 간단한 문제라서 건너뛰겠습니다. 기찍 N(#2742)으로 돌아올게요!


 

백준으로 배우는 C 언어 17. 기찍 N

지금까지 for 문을 배우면서 증감식 부분에 i++를 사용해 왔습니다. 하지만 꼭 i를 증가시켜야만 하는 건 아닌데요, i--를 사용해서 감소하도록 설정해 줄 수도 있습니다. 이번 문제가 딱 좋은 예제인데요, 바로..

torotoblog.tistory.com