부녀회장이 될테야 성공분류
시간 제한 |
메모리 제한 |
제출 |
정답 |
맞은 사람 |
정답 비율 |
1 초 |
128 MB |
25292 |
14248 |
12517 |
57.534% |
https://www.acmicpc.net/problem/2775
문제
평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.
이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.
아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.
입력
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 <= k <= 14, 1 <= n <= 14)
출력
각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.
알고리즘 분류
백준 알고리즘 # 2775번 : 부녀회장이 될테야
t = int(input()) # t = 2
for _ in range(t):
k = int(input()) # k = 1, 2
n = int(input()) # n = 3, 3
num = [i for i in range(1, n + 1)] # [1, 2, 3], [1, 2, 3]
for _ in range(k):
for i in range(1, n):
num[i] += num[i - 1] # [1, 3, 6] -> [1, 4, 10]
print(num[-1])
풀이
3층
1
5
15
35
2층
1
4
10
20
1층
1
3
6
10
0층
1
2
3
4
.
1호
2호
3호
4호
위와 같이 0층부터 num[i][j] = num[i-1][j] + num[i][j-1]의 규칙이 있다는 것을 알고
변수 t를 설정해서 테스트 케이스의 수를 입력 받고, 그 수만큼 for문을 돌리고
변수 k로 층을 입력받고, n으로 호를 입력받았다.
다음으로 0층을 나타내는 변수 num를 설정해서 규칙이 시작되는 [1, 2, 3]을
1부터 n까지 돌려 [1, 2, 3], [1, 2, 3] 두 개를 만들었다.
그리고 for문을 사용해서 층을 나타내는 변수 k 반복하고
그 안에 이중 for문으로 1호를 제외한 2호, 3호, 4호 .. 을 바꾸기 위해서
num[i] = num[i] + num[i - 1]
위와 같이 "1호부터 b호까지 사람들의 수의 합만큼"의 조건을 충족시킬 수 있는 코드를 짰다.
테스트 케이스에 해당하는 층(k)의 맨 마지막 수인 num[-1]을 출력하면
구하고자 하는 결과가 for문을 돌며 각각 나오면서 풀이 끄--읏👏
자세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏
최종 소스코드
'코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 | 1463 : 1로 만들기 (Python / 파이썬) (0) | 2020.09.24 |
---|---|
백준 알고리즘 | 1011 : Fly me to the Alpha Centauri (Python / 파이썬) (0) | 2020.09.23 |
백준 알고리즘 | 10250 : ACM 호텔 (Python / 파이썬) (0) | 2020.09.22 |
백준 알고리즘 | 2869 : 달팽이는 올라가고 싶다 (Python / 파이썬) (0) | 2020.09.22 |
백준 알고리즘 | 1193 : 분수찾기 (Python / 파이썬) (0) | 2020.09.22 |
댓글