C언어 기초: 반복문을 이용한 출력

김영채 (Kevin)·2020년 4월 3일
0

C언어

목록 보기
6/23
post-thumbnail

요즘 학교에서 C언어 기초 과목을 수강하고 있는데, 3주차 밖에 되지 않았음에도 꽤 진도를 빠르게 나가고 있다. 뭐랄까, 배운건 아주 기초적인데 문제로 나오는 것들은 엄청난 응용 버전이랄까?

비대면 강의로 과목들을 수강하고 있어서 다른 학생들은 얼마나 잘 따라오는지는 잘 모르겠는데, 내가 많이 못하는 것 같다. 문제 풀이에 시간도 오래 걸리고, 응용 문제를 푸는 데 힘이 많이 든다.

어쨌든 오늘 배운 반복문 응용 문제를 다시 풀어보자.

반복문을 이용해서 이런식으로 출력하란다. 처음에는 쉬워 보였지만 생각할수록 조금 헷갈렸다.

우선 반복문 하나를 사용해서는 당연히 안 될 것 같고, for문을 2개만 사용하자니 그것도 안 될 것 같았다.. 그렇다면 답은 for문을 3번 이용하는건가..? 그럼 머리가 너무 아픈데..

처음에 고민했던 형식은 아래와 같았다.

for(~~~)
	for(~~~)
    		for(~~~)

3중 for문을 쓰면 되나..? 근데 이러면 너무 복잡한데..

다시 잘 생각해보니 아래처럼 쓰면 될 것 같았다.

for(~~~)
	for(~~~)
    ~~~
    	for(~~~)

첫 번째 for문은 입력받은 숫자만큼 반복하게 하는 것이고, 두 번째 for문은 숫자 출력, 세 번째 for문은 * 을 출력하면 되는 것이다.

쉬워 보였지만 코드를 짜는데 꽤 오래 걸렸다.

#include <stdio.h>

int main(void) {

    int num;
    scanf("%d", &num);

    for(int i=1;i<=num;i++){
        for(int j=1;j<=i;j++){
            printf("%d", j);
        }
        for(int k=i+1;k<=num;k++){
                printf("*");
        }
        printf("\n");
    }

    return 0;
}

아무래도 for문을 3개나 쓰느라 꽤 애를 먹었던 것 같다. 그리고 각 for문에 들어올 조건도 어떻게 써야할지 몰라 생각을 오래했다. i<=num 은 생각하기 쉬웠지만, j<=i, k<=num, 그리고 k의 초기값이 i+1으로 설정하는 것도 나에겐 까다로웠다.

profile
맛있는 iOS 프로그래밍

0개의 댓글