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
반응형
'Python > 코딩테스트' 카테고리의 다른 글
다중반복문 - 모양대로 수 출력하기 (0) | 2025.02.26 |
---|---|
다중반복문 - 숫자로 이루어진 삼각형 (0) | 2025.02.26 |
다중반복문 - 특이한 출력 (0) | 2025.02.26 |
다중반복문 - 일직선 구구단 (0) | 2025.02.26 |
다중반복문 - 구구단2 (0) | 2025.02.24 |