이 예제는 백준, 프로그래머스 등등 코테 알고리즘 문제에 기본으로 나오는 단골 문제이므로, 

기본을 손과 머리에 익히면 좋을 것 같아 정리합니다.


문제

다음과 같이 *을 출력하는 코드를 for 반복문을 사용해 작성하세요. 이중 for 반복문을 사용해서 코드를 작성하세요

 

실행결과

 

접근

이중 for문을 사용해서 별을 찍을 때

첫 번째의(바깥쪽) for문은 총 줄의 개수를 정하고,

두 번째의(안쪽) for문은 총 칸의 개수를 정한다.

 

즉, 바깥쪽 for 문 = 행 (바깥쪽 for문 반복이 3이면 총 3행)

     안쪽 for 문 = 열 (안쪽 for문 반복이 6이면 총 6열)

 

위 문제의 경우, 총 행의 수는 5이므로 바깥쪽 for 문의 반복 횟수는 5이다.

열의 수는 1행 = >1, 2행 => 2, 3행 => 3의 변화하는 등차수열을 띄므로 반복 횟수가 변수라는 것을 알 수 있다.

 

위의 접근으로 코드를 작성하면 다음과 같다.

for i in range(0,5):    # 이 줄은 행 반복을 담당합니다.
    for j in range(1,i+1):    # 이 줄은 열 반복을 담당합니다.
        print('*', end='')     # 별 출력
    print()

결과

동일하게 잘 출력되었다.

 

 

깨알 지식

 

line 3의 print('*')로 작성하면 파이썬에서 print()를 실행하고 나서 자동으로 줄 바꿈이 추가되므로

*

 

*

*

 

*

*

*

...

와 같이 출력이 된다. 따라서 별이 연달아 찍히게 하기 위해 end=''를 추가해준다.

한 행의 출력이 끝나면 print()를 실행하게 하여 줄바꿈이 가능하게끔 한다.

 

이중 for문을 사용하지 않고도 충분히 별을 찍을 수 있다.

for i in range(1,6):
    print('*' * i)