Page 37 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 37
곱셈표를 출력하는 초록색 박스로 표시한 부분의 순서도는 그림 1-15에 나타냈습니다. 순서
도의 오른쪽에 있는 그림은 변수 i와 j의 변화를 ●와 ●로 나타낸 것입니다. 바깥쪽의 for문
(행 루프)은 변수 i의 값을 1부터 9까지 증가시킵니다. 각각의 반복은 표의 ‘1행, 2행, … 9행’에
해당합니다. 다시 말해 바깥쪽의 for문은 세로 방향에 대한 반복입니다.
그 각각의 행에서 실행되는 안쪽의 for문(열 루프)은 변수 j의 값을 1부터 9까지 증가시킵니다.
즉, 각 행의 가로 방향에 대한 반복입니다. 변수 i의 값을 1부터 9까지 증가시키는 ‘행 루프’는
9회 반복됩니다. 그 각각의 반복으로 변수 j의 값을 1부터 9까지 증가시키는 ‘열 루프’가 9회
반복됩니다. 열 루프 종료 후 줄 바꿈 문자의 출력(putchar(' / n'))은 1부터 9까지 출력을 완료한
행에서 줄을 바꾸어 다음 행을 출력하기 위해 사용했습니다.
따라서 이 이중 루프는 다음과 같이 처리됩니다.
i가 1일 때 : j를 1 ⇨ 9 증가시키면서 1 * j를 출력합니다. 그리고 줄 바꿈합니다.
i가 2일 때 : j를 1 ⇨ 9 증가시키면서 2 * j를 출력합니다. 그리고 줄 바꿈합니다.
i가 3일 때 : j를 1 ⇨ 9 증가시키면서 3 * j를 출력합니다. 그리고 줄 바꿈합니다.
i가 9일 때 : j를 1 ⇨ 9 증가시키면서 9 * j를 출력합니다. 그리고 줄 바꿈합니다.
조금만 더! 개행 문자란 무엇인가요?
putchar(' / n');에서 ‘ / n’은 개행 문자(newline)로, 텍스트의 한 행이 끝나고 새로운 행이 시작됨을 의미합
니다. 줄 바꿈 문자(line break), EOL(End-Of-Line)이라고도 합니다.
행 루프 변수 i와 j의 변화
i : 1, 1, 9 i j
1 1 2 3 4 5 6 7 8 9
열 루프
j : 1, 1, 9 2 1 2 3 4 5 6 7 8 9
3 1 2 3 4 5 6 7 8 9
i * j를 3자리로 출력 4 1 2 3 4 5 6 7 8 9
5 1 2 3 4 5 6 7 8 9
열 루프 6 1 2 3 4 5 6 7 8 9
7 1 2 3 4 5 6 7 8 9
줄 바꿈
8 1 2 3 4 5 6 7 8 9
9 1 2 3 4 5 6 7 8 9
행 루프
[그림 1-15] 곱셈표를 출력하는 순서도
01•기본 알고리즘 37