본문 바로가기

C 언어

백준으로 배우는 C 언어 20. 별 찍기 - 2

이번 문제는 18. 별 찍기 - 1 문제와 비슷한데요, 별을 오른쪽 정렬로 해야 하기 때문에 조금 까다로운 부분이 있습니다. 프로그래밍을 처음 접하시는 분들은 조금 어렵게 느끼실 수도 있는데요, 경험이 쌓이다 보면 이런 경우에는 어떤 형식으로 코드를 짜야하는지 감이 생기니까 최대한 많은 경험을 쌓는 게 중요합니다.


 

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

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

torotoblog.tistory.com

 

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

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

torotoblog.tistory.com


별 찍기 - 2(#2439) 문제는 저번에 풀었었던 별 찍기 - 1와 비슷하게 n이 입력됐을 때 첫째 줄에는 1개, 둘째 줄에는 2개, n번째 줄에는 n개의 별을 출력해야 하는 문제입니다. 다만 이번에는 오른쪽으로 정렬을 해야 하는데 단순 출력으로는 오른쪽 정렬을 설정할 수 없습니다. 그렇기 때문에 앞에는 스페이스로 채워 넣어야 하죠. 코드를 살펴봅시다. 

#include <stdio.h>

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

코드도 별 찍기 - 1 문제와 거의 비슷한데요, 다만 앞에 빈칸을 채워 넣기 위한 for 문이 하나 더 추가된 점만 다릅니다. 오른쪽으로 정렬을 하기 위해서는 첫째 줄에는 a - 1 만큼의 빈칸을 추가하고 하나씩 줄여나가면 되겠죠? 그렇기 때문에 두 번째 for 문의 초기화 변수의 값을 a - 1로 설정해 준 뒤 반복될 때마다 감소시켜주면 됩니다. 

자세히 보시면 안쪽에 있는 두 for 문들의 초기 변수 이름이 같은 걸 보실 수 있습니다. 저번 문제들을 풀면서 for 문 안에서 선언한 변수는 그 안에서만 사용할 수 있다 했는데요, 그 말은 즉 밖에서 또 다른 for 문을 만들면 위 코드처럼 같은 이름을 사용해도 상관이 없다는 뜻입니다. 

테스트를 해 봅시다. 빌드를 한 뒤 숫자를 입력하면 오른쪽으로 정렬된 별들이 출력되네요.

제출을 합시다! 백준에서 언어를 C로 설정하고 제출 버튼을 클릭하시면 됩니다. 

성공!