본문 바로가기

C 언어

백준으로 배우는 C 언어 18. 별 찍기 - 1

for 문을 여러 번 사용하면 어떻게 될까요? 해보기 전 까지는 어떨지 쉽게 예상이 가지 않을 건데요, 이번 문제를 통해서 중복해서 사용되는 for 문에서는 결과가 어떻게 나오는지 확인해 봅시다. 


 

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

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

torotoblog.tistory.com

 

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

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

torotoblog.tistory.com


별 찍기(#2438) 문제는 입력된 수 n 만큼 첫 줄에는 1개, 둘째 줄에는 2개, n번째 줄에는 n개를 출력해야 하는 문제입니다. n 번째 줄에는 n개의 별을 출력해야 하기 때문에 for 문 하나로는 원하는 대로 출력을 할 수 없습니다. 이럴 때는 for 문을 두 번 사용해서 여러 번 출력하도록 해야 하는데요, 코드를 확인해보죠. 

#include <stdio.h>

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

이렇게 작성하시면 됩니다. 알고나면 복잡하지는 않은데요, 처음 풀이 할 때는 조금 복잡하게 느껴질 수도 있습니다. 

for (int i = 0; i < a; i++) {
    for (int j = 0; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}

첫 for 문은 전에 했던 것과 크게 다를 게 없기 때문에 두 번째 for 문 위주로 설명드리도록 하겠습니다. 우선은 for 문을 두 번 사용하면 대부분 초기 변수를 j로 설정합니다. i, j, k 순으로 많이 사용하죠. 다만 변수 이름은 어떻게 설정해도 상관없기 때문에 다른 이름을 사용해도 크게 문제 되지는 않습니다. 두 번째로는 조건문인데요, 두 번째 for 문에는 보통 조건식을 i와 관계되게 설정합니다. 이번에는 j가 i보다 작거나 같을 때로 설정했죠. 이렇게 되면 i가 늘어날수록 두 번째 for 문도 여러 번 반복하게 됩니다. 그래서 문제에서 원하는 데로 첫 줄에는 1개, 두 번째 줄에는 2개 이런 식으로 출력을 할 수 있게 되는 거죠.

주의할 점은 줄 바꿈이 별을 모두 출력한 뒤에 나와야 하기 때문에 두 번째 for 문 안에는 줄 바꿈이 있으면 안 됩니다. 그래서 두 번째 for 문이 끝난 뒤에 줄이 바뀌도록 해 주어야 합니다. 

테스트를 해 볼까요? 빌드를 한 뒤 숫자를 입력해 넣으면 별이 차례대로 프린트됩니다. 잘 작동하네요!

언어를 C로 선택한 다음에 제출을 해 줍시다.

성공!

이번 문제는 조금 복잡한 문제였네요! 이해가 잘 안 되는 부분이 있다면 언제든지 댓글 달아주시면 답변해 드리도록 하겠습니다 ㅎㅎ


 

백준으로 배우는 C 언어 19. 알람 시계

오늘 백준 사이트에 들어가 보니 if 문 단계에 문제가 하나 추가가 되었더라고요. 그래서 복습을 해볼 겸 오랜만에 if 문 문제를 가져왔습니다. 그럼 바로 문제를 풀어볼까요? 백준으로 배우는 C 언어 07. A / B..

torotoblog.tistory.com