요즘 학교에서 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으로 설정하는 것도 나에겐 까다로웠다.