https://www.acmicpc.net/problem/2775
- a층 b호에 살려면 a-1층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다.
- 아파트는 0층부터 있고 각층에는 1층부터 있으며, 0층의 i호에는 i명이 산다.
- k층에 n호에는 몇 명이 살고 있는지 출력
이 조건을 생각하면서 문제에 접근했다.
일단 층과 방 수를 출력 받아야 하고,
0층에 사는 거주민들의 수가 i호에는 i명으로 정해져 있으므로 0층 거주민들을 리스트화해야겠다고 생각했다.
인덱스가 증가할 때마다 그 전까지의 수를 더하면
1 | 5 | 15 | 25 |
1 | 4 | 10 | 20 |
1 | 3 | 6 | 10 |
1 | 2 | 3 | 4 |
이런 식으로 각 호수에 사는 거주민들의 수를 얻을 수 있다.
출력할 때는 마지막 요소를 출력해야 하므로 -1을 출력해야 한다.
코드에 추가적인 주석을 달아놨다.
T = int(input())
for _ in range(T):
# 층수 입력
k = int(input())
# 호수 입력
n = int(input())
# 0층의 각 호수에 사는 사람 수를 리스트에 저장
# 각 호수의 사람 수는 호수 번호와 같음
floor_0 = [i for i in range(1, n+1)]
# 각 층별로 반복
for _ in range(k):
# 해당 층의 각 호수에 대해 반복
for j in range(1, n):
# 현재 호수의 사람 수에 이전 호수까지의 사람 수의 합을 더함
floor_0[j] += floor_0[j-1]
print(floor_0[-1])
'프로그래머스, 백준' 카테고리의 다른 글
백준 2231번 분해합 (0) | 2024.05.08 |
---|---|
백준 9095번 1,2,3 더하기 (1) | 2024.05.01 |
백준 2629번 양팔저울 (0) | 2024.04.02 |
백준 1520번 내리막길 (0) | 2024.04.02 |
1주차_공배수 (0) | 2024.03.27 |