2022 데이터 사이언스/Python Basics

07. 반복문(3): 반복문의 중첩

gool 2022. 6. 14. 16:58
반복문의 종속문장에 반복문을 삽입하여 반복문을 중첩시킬 수 있다.

 

 

 

반복문 안에 또 다른 반복문을 위치시키는 반복문의 중첩은 매우 중요한 개념이다.

전체적인 뼈대가 되는 반복문을 외반복문, 종속문장이 되는 반복문을 내반복문이라고 한다.

외반복문과 내반복문의 반복 횟수가 명확하다면,

반복문의 중첩을 활용하여 단순화된 코드로 훨씬 더 많은 경우의 수를 다룰 수 있다.

 

 

반복문의 중첩을 이해하는 두 가지 방법이 있다.

각각 기획과 확장의 방식이다.

 

먼저 기획의 방식이다.

반복의 대상과 범위를 확인한 뒤,

'A x B' 형태의 중첩에서 A와 B 중 어떤 것이 더 많이 반복되는지 판단한다.

더 많이 반복되는 대상이 내반복문으로, 덜 반복되는 대상이 외반복문으로 들어가면 된다.

 

구구단 출력 문제를 예시로 살펴보자.

아래 링크에서 구구단 출력 관련 코드와 기타 반복문의 중첩 예제 코드를 확인할 수 있다.

 

 

https://github.com/tldnjs1231/python-basics/blob/main/python-basics-07-for_nested.py

 

GitHub - tldnjs1231/python-basics

Contribute to tldnjs1231/python-basics development by creating an account on GitHub.

github.com

 

 

구구단 예제 3번 문제는 아래처럼 2~9단을 가로로 출력하는 것을 목표로 한다.

 

 

A x B의 형태에서 A가 range(2, 10), B가 range(1, 10) 이라고 한다면,

첫 번째 줄에 2 * 1  →  3 * 1  →  4 * 1  →  ...  →  9 * 1,

줄을 바꿔 2 * 2  →  3 * 2  →  ...  →  9 * 2 와 같은 순서로 출력이 이루어지기 때문에

A는 9번 반복되는 반면, B는 1부터 9까지의 숫자를 한 번씩만 거치게 된다.

따라서 더 많이 반복되는 A가 내반복문, 더 적게 반복되는 B가 외반복문에 위치한다.

 

 

 

다음은 확장의 방식이다.

확장의 경우 기획에 비해 고민의 과정이 간단하다.

하나를 대상으로 코드를 작성한 뒤, 대상을 여러 개로 확장하는 방식이다.

 

구구단 예제 2번 문제는 아래와 같은 세로 출력을 목표로 한다.

 

...

 

임의의 k단을 출력하는 코드는 다음과 같다.

 

 

for j in range(1, 10):

    print(k, 'x', j, '=', k*j)

 

 

k단 하나만을 출력하는 코드가 위와 같다면,

2~9단을 출력하기 위해서는 k에 2부터 9까지의 숫자를 넣어주면 된다.

: for k in range(2, 10)

 

 

for k in range(2, 10):

    for j in range(1, 10):

        print(k, 'x', j, '=', k*j)

 

 

쉽게 말해 하나를 대상으로 동작을 실행하는 for문(내반복문)을

전체 대상의 범위를 지정하는 for문(외반복문) 안으로 밀어넣으면 된다.

 

 

다음 포스팅에서는 반복문의 중첩 심화 문제를 추가로 살펴볼 예정이다.