[C언어] # 4. 이중 반복문 & 예제 풀이 (2)

Crush_on_Study·2022년 6월 6일
0

C언어 기초

목록 보기
5/11

이전 시간까지 반복문의 종류들에 대해 배웠어요. 오늘은 이중 반복문 N차 반복문에 대해서 간단히 살펴보고 예제 풀이로 넘어가고자 합니다.


2중 반복문 (for문)

0. 2중 반복문

2중 반복문도 어려운 개념은 아닙니다. 아래 소스코드를 보고 천천히 저랑 같이 수행방식을 유추해봅시다.

01234가 총 5번 반복되서 출력이 되었습니다. 분명 i,j때문일텐데 말이죠?

  • 2중 반복문에서는 가장 밖에 있는 for문을 Outer Loop라고 합니다.
    위 코드에선 변수 i를 담고 있는 for문이 Outer Loop겠죠?
  • 그 다음 변수 j를 담고 있는 for문이 또 보입니다. 근데, Outer Loop의 for문 아래에 '들여쓰기' 형태로 선언되어있죠?

이런 식인데요. Outer Loop의 i=0이 실행되면, j가 0부터 4까지 출력됩니다. 그 후, 다시 i로 넘어가서 i=1이 실행되면, j는 또 다시 0 to 4로 출력됩니다.

그럼 이제 위의 코드가 왜 01234가 5번이 반복되었는지 이해가 됩니다.
Outer Loop 안에 Inner Loop 들이 있는겁니다.


예제 1

그럼 이제 반복문들의 예제를 한번 다뤄봅시다.

1. 별 찍기 : 쉬운 난이도

학교수업에서 빠짐없이 나오는 예제입니다. 근데 얘만큼 2중 반복문을 잘 나타내는 예제가 없긴합니다 ㅎㅎ

한번 같이 생각해봅시다. 이거는 처음보면 많이 어려울거에요.
일단 문제에서 요구하는건 n을 입력하는게 먼저네요.

  • 입력함수 scanf 를 써야겠군.

그 다음으로 생각해볼 것은 입력한 숫자만큼 행 개수가 결정됩니다.
5를 입력했더니 5줄이 출력되었으니까요.

Okay! 그러면 반복문을 배웠으니 이걸 적용해보면 되겠네? 변수를 선언해준다음, for문으로 초기값 / 조건식 / 증감식을 쓰자!

  • for (i=1; i<=n; i++)

이렇게까지 해보고 일단 출력을 해봅시다.

오... 뭔가 얼추 비슷은 한데... 우리가 원하는건 이게 아니죠?

  • 아하! 행 개수만 결정할게 아니라, 열 개수도 함께 늘어나는 식으로 해야겠구나! 그럼 2중 for문 을 적용해봐야겠다!

이제 여기까지 했으면 나머지는 잠시 스크롤을 내리지말고 고민해봅시다.

3
.
.
.
.
2
.
.
.
.
.
1
.
.
.

#include <stdio.h>

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

결과 화면

이 예제는 C언어가 처음이라면 당연히 어려울거에요. 풀지 못했어도 그건 여러분들이 바보라서 그런게 아닙니다!


예제 2

2. 구구단 : 구구단 쉬운예제

이번에 풀어볼 문제는 구구단입니다.

천천히 어떻게 코드를 짜볼 것인지 생각해봅시다.

  • 일단 N을 입력받으라 하네요?
#include <stdio.h>
int main()
  {
      int N;
      scanf("%d",&N);
  
  		return 0;
  }

Okay, 그럼 문제에서 요구하는게 입력받은 N의 단을 구하는 것입니다.
문제 잘보면, 2단부터 9단까지 쭉 출력하는게 아니라, 입력한 N단만 구하는 것이므로, 해당 문제는 그냥 for문을 쓰면 되겠네요!

풀이는 기재하지 않을테니, 한번 구현해보시길!


Assignment

A. 예제1 : 2단부터 9단까지 출력하는 프로그램 만들기.
B. 예제2 : https://www.acmicpc.net/problem/2439
C. 예제3 : https://www.acmicpc.net/problem/8393
D. 예제4 : https://codeup.kr/problem.php?id=1081

예제는 다 못풀 수도 있습니다. 다만, 최대한 시도는 해본 뒤에 구글링을 통해 해설을 찾는 걸 추천드립니다.

profile
방구석백수 코드몽키

0개의 댓글