본문 바로가기
Python/코딩테스트

다중반복문 - 구구단으로 이루어진 직각삼각형

by Nanki 2025. 2. 26.

ex) N=5
1 * 1 = 1 / 1 * 2 = 2 / 1 * 3 = 3 / 1 * 4 = 4 / 1 * 5 = 5
2 * 1 = 2 / 2 * 2 = 4 / 2 * 3 = 6 / 2 * 4 = 8
3 * 1 = 3 / 3 * 2 = 6 / 3 * 3 = 9
4 * 1 = 4 / 4 * 2 = 8
5 * 1 = 5

<정석풀이>
1) for 중첩 문의 구조, 열이 행이 1씩 증가할 때마다 1씩 감소하는 행렬로 보임
> i번쨰 줄에 구구단의 곱셈식이 n-i개씩 등장함

2) '/'는 각 줄의 마지막 곱셈식 뒤에는 출력되면 안됨. 따라서 곱해지는 수(j)가 n-j일때 (range에서 출력되는 마지막 값과 같아질때) '/'는 출력하지 않는다는 조건을 걸어야 함

n = int(input())

for i in range(1, n + 1):
    for j in range(1, n - i + 2):
        print(f"{i} * {j} = {i * j}", end="")
        
        if j != (n - i + 1):
            print(" / ", end="")
    print()

 

 

<풀이2>
1) for 중첩 문의 구조, 열이 행이 1씩 증가할 때마다 1씩 감소하는 행렬로 보임
> i번쨰 줄에 구구단의 곱셈식이 n-i개씩 등장함
2) 문제에서 규칙을  / 1 * 2 = 2 꼴 형태로 묶는다. 즉 첫번째 열(j)에서는 '/'가 앞에 붙지 않는다.
if 문으로 j가 1인경우, 아닌경우를 나누어서 print한다.

 

n = int(input())

for i in range(n) :
    for j in range(n-i) :
        if (j+1 != 1):
            print(f" / {i+1} * {j+1} = {(i+1)*(j+1)}", end = '')
        else :
            print(f"{i+1} * {j+1} = {(i+1)*(j+1)}", end = '')
    print()

 

문제 출처 : 코드트리

https://www.codetree.ai/trail-info

반응형