본문 바로가기

파이썬(문제풀이)

별찍기-직각삼각형

위의 이미지에서 처럼 직각 삼각형의 모습 이다

더보기

해당 코드는 파이썬의 이중 for문을 사용하여 별(*)을 이용한 직각삼각형을 출력하는 코드이다. 코드는 총 8줄로 구성된 삼각형 모양을 만든다.

# 방법 1: 이중 for문 사용

n = 8
for i in range(1, n + 1):
    for j in range(i):
        print('*', end='')
    print()

 

코드 분석

  • n = 8
    • **n은 삼각형의 높이(행의 수)**를 결정하는 변수입니다. 여기서는 8로 설정되어 있으므로, 코드는 8줄의 별을 출력하게 됩니다.
  • for i in range(1, n + 1):
    • 이것은 바깥쪽 for문으로, **행(줄)**을 제어합니다.
    • range(1, n + 1)은 1부터 8까지의 숫자를 순서대로 생성합니다. 즉, i는 1, 2, 3, 4, 5, 6, 7, 8의 값을 가지게 됩니다.
    • i가 1일 때 첫 번째 줄, i가 2일 때 두 번째 줄... 이런 식으로 반복됩니다.
  • for j in range(i):
    • 이것은 안쪽 for문으로, 각 행에 출력할 별의 개수를 제어합니다.
    • range(i)는 i 값에 따라 반복 횟수가 달라집니다.
      • i가 1일 때: range(1)이므로 1번 반복하여 별을 1개 출력합니다.
      • i가 2일 때: range(2)이므로 2번 반복하여 별을 2개 출력합니다.
      • i가 8일 때: range(8)이므로 8번 반복하여 별을 8개 출력합니다.
    • 결론적으로, 각 행의 별 개수가 현재 행 번호와 동일하게 됩니다.
  • print('*', end='')
    • 별(*)을 출력하는 부분입니다.
    • end=''는 줄바꿈 없이 다음 내용이 바로 이어서 출력되도록 하는 옵션입니다. 따라서 안쪽 for문이 반복되는 동안 별들이 한 줄에 계속해서 나열됩니다.
  • print()
    • 안쪽 for문이 끝나면 실행되며, 강제로 줄바꿈을 합니다.
    • 이 덕분에 각 행의 별들이 출력된 후 다음 줄로 넘어가서 새로운 행을 시작할 수 있습니다.
더보기

이 코드는 파이썬의 문자열 곱셈 기능을 사용하여 별(*)로 직각삼각형을 출력한다. 이전 코드와 달리, 이중 for문을 사용하지 않고 훨씬 간결하게 같은 결과를 만들어 낸다.

# 방법 2: 문자열 곱셈 사용

n = 8
for i in range(1, n + 1):
    print('*' * i)

코드 분석

  • n = 8
    • **n은 삼각형의 높이(행의 수)**를 정하는 변수입니다. 8로 설정되었기 때문에 코드는 총 8줄을 출력합니다.
  • for i in range(1, n + 1):
    • for문은 **행(줄)**을 제어합니다.
    • range(1, n + 1)은 1부터 8까지의 숫자를 순서대로 만들어 냅니다. 따라서 변수 i는 1, 2, 3, 4, 5, 6, 7, 8의 값을 차례로 가지게 됩니다.
  • print('*' * i)
    • 이 부분이 이 코드의 핵심입니다. 파이썬에서는 문자열에 정수를 곱하면 그 문자열을 정수만큼 반복하여 새로운 문자열을 만듭니다.
    • i가 1일 때: '*' * 1은 '*'가 되어 별 1개를 출력합니다.
    • i가 2일 때: '*' * 2는 '**'가 되어 별 2개를 출력합니다.
    • i가 8일 때: '*' * 8은 '********'가 되어 별 8개를 출력합니다.
    • print() 함수는 기본적으로 출력 후 줄바꿈을 하기 때문에, 매 반복마다 별이 하나씩 늘어난 문자열이 다른 줄에 출력됩니다.
더보기

이 코드는 while문을 사용하여 별(*)로 직각삼각형을 출력하는 코드이다. for문 예시와 마찬가지로 문자열 곱셈을 활용해 코드를 간결하게 작성했다.

# 방법 3: while문 사용

n = 8
i = 1
while i <= n:
    print('*' * i)
    i += 1

코드 분석

  • n = 8
    • **n은 삼각형의 높이(행의 수)**를 결정하는 변수입니다. 여기서는 삼각형이 총 8줄로 만들어집니다.
  • i = 1
    • **i는 while문의 반복 횟수(현재 행의 번호)**를 제어하는 변수로, 1로 초기화됩니다. 이 변수가 각 줄에 출력될 별의 개수를 결정합니다.
  • while i <= n:
    • while문의 조건식입니다. i의 값이 n(8)보다 작거나 같을 때만 블록 안의 코드가 반복해서 실행됩니다.
    • i가 1일 때, 2일 때, ..., 8일 때까지 조건이 참이 되어 코드가 실행되고, i가 9가 되는 순간 조건이 거짓이 되어 반복문이 종료됩니다.
  • print('*' * i)
    • 각 행에 별을 출력하는 핵심 부분입니다. 파이썬의 문자열 곱셈 기능을 활용하여 별(*)을 i의 값만큼 반복해서 출력합니다.
    • i가 1일 때는 '*'가 출력되고, i가 2일 때는 '**'가 출력되는 식으로 i의 값에 따라 별의 개수가 늘어납니다.
  • i += 1
    • i의 값을 1씩 증가시키는 부분입니다. 이 문장이 없으면 i의 값이 영원히 1에 머물러 while문의 조건(i <= n)이 항상 참이 되어 무한 루프에 빠지게 됩니다. 이 코드가 있기 때문에 i는 1씩 증가하며 최종적으로 while문을 탈출할 수 있게 됩니다.