밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
1. readline과 int나 float를 사용하는 입력 방식
readline을 사용해서 입력할 때는 맨 끝에 \n이 붙어서 입력됩니다.
하지만, 입력한 값을 int나 float으로 처리해 정수, 실수형으로 만들어 줄 때는
굳이 \n을 떼기 위해 rstrip을 사용할 필요가 없습니다.
숫자 형태를 만들어줄 때 자동으로 사라집니다.
num = int(sys.stdin.readline())
2. 숫자 피라미드에서 시작하는 숫자
이번 문제의 숫자 피라미드에서 특별히 고려해야 점은 길이 n을 입력했을 때
숫자 피라미드에서 시작하는 숫자가 몇인지 알아내야 한다는 것입니다.
시작하는 숫자는 숫자 피라미드에서 출력할 숫자의 총 개수이므로 1부터 n까지의 합입니다.
1부터 n까지의 합은 반복문으로 구해도 되지만,
이런 쉬운 등차수열 같은 경우에는 등차수열의 공식을 외워둬 더 쉽게 계산해버립시다.
예제 설명
1. 첫 번째 예제
- 입력
3
- 출력
6
5 4
3 2 1
- 설명
입력한 숫자 피라미드의 길이 n은 3입니다.
숫자 피라미드에서 처음 시작하는 숫자는 숫자 피라미드에서 출력하는 숫자의 총 개수이므로
n이 3이면 1부터 3까지의 합입니다. 따라서 시작하는 숫자는 3 X (3 + 1) / 2 = 6입니다.
따라서 첫 번째 줄에는 6 한 개, 두 번째 줄에는 5 4 두 개, 세 번째 줄에는 3 2 1 세 개를 출력해
문제에서 요구하는 숫자 피라미드의 형식을 출력합니다.
생각한 풀이 과정
1 <= n <= 99인 숫자 피라미드의 길이 n을 입력하고, int형으로 변환합니다.
n = int(stdin.readline())
숫자 피라미드에서 처음 시작하는 숫자를 구하고 변수 start에 저장합니다.
처음 시작하는 숫자는 숫자 피라미드에서 출력할 숫자의 총 개수이므로 1부터 n까지의 합입니다.
start = n * (n + 1) // 2
- 외부 반복문 시작
입력한 길이 n만큼 반복합니다.
각 줄의 순서와 해당 줄에서 출력할 숫자의 개수를 의미하도록 1부터 n까지 반복합니다.
for line in range(1, n + 1):
- 내부 반복문 시작
현재 줄에서 외부 반복문에서 지정한 line의 값만큼 반복해봅니다.
for num in range(line):
변수 start의 현재 값과 공백을 출력하고, 다음 줄로 내리지 않습니다.
print(f'{start} ', end='')
변수 start의 값에서 1을 빼고 다시 저장합니다.
start -= 1
- 내부 반복문 끝
한 줄 출력이 끝나면 다음 줄로 넘어갑니다.
print()
- 외부 반복문 끝
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 길이 n을 입력합니다.
# 1 <= n <= 99
# int형으로 변환합니다.
n = int(stdin.readline())
# 입력한 길이 n에 대하여 숫자 피라미드에서 처음 시작하는 숫자를 계산하고 변수에 저장합니다.
# 처음 시작하는 숫자는 길이 n인 숫자 피라미드에서 숫자의 개수입니다.
start = n * (n + 1) // 2
# 입력한 길이 n만큼 반복해봅니다.
# 각 줄의 순서와 해당 줄에서 출력할 숫자의 개수를 의미하도록 1부터 n까지 반복합니다.
for line in range(1, n + 1):
# 숫자 피라미드의 현재 줄에서 line만큼 반복해봅니다.
for num in range(line):
# 변수 start의 현재 값과 공백을 출력하고, 다음 줄로 내리지 않습니다.
print(f'{start} ', end='')
# 변수 start의 값에서 1을 빼고 다시 저장합니다.
start -= 1
# 숫자 피라미드에서 한 줄 출력이 끝나면 다음 줄로 넘어갑니다.
print()
제출 결과
댓글