Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- tlqkf
- python
- Docker
- pwnable.kr
- 애너그램 그룹
- 페니빙
- 쏘큩
- cmd1
- cmd2
- Make sure the Cursor is initialized correctly before accessing data for it.
- 코틀린
- Drive-By-Download
- 클라우드란?
- java.lang.IllegalStateException
- 백준
- pwable.kr
- UNIQUE constraint failed
- 나이순 정렬
- 포너블
- kotlin
- 파이썬
- 액션바 필요없숴
- 6566
- pwnable
- Couldn't read row 0
- 블록체인
- 클라우드가 뭐야
- SQLiteConstraintException
- 10814
- col -1 from CursorWindow
Archives
- Today
- Total
푸르미르
[python]2775.부녀회장이 될테야 본문
부녀회장이 되고싶단다. 소원을 들어주자.
그 아파트에는 "a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항이 있다고 한다. 별.. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.
모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하는 프로그램을 만드는 문제이다.
재귀함수를 이용하여 풀 수 있지만 재귀를 생각하기 귀찮아서 다른 방법을 생각했다.
0층 3호까지 거주인의 수를 리스트로 나타내면 [1, 2, 3]이다.
1층 3호까지의 거주인 수를 리스트로 나타내면[1, 1+2, 1+2+3]
2층 3호까지는 그럼 [1, 1+1+2, 1+1+2+1+2+3]
3층 3호까지는 [1, 1+1+1+2, 1+1+1+2+1+1+2+1+2+3]
규칙이 있는 것을 알 수 있는데 k층의 n호= k층의 (n-1)호의 거주인들 수 + (k-1)층의 n호 거주인들 수라는 것을 알 수 있다. (1호는 층에 상관없이 항상 1명만 거주하므로 1호 제외)
이를 이용하여 코드를 짜면
1
2
3
4
5
6
7
|
for _ in range(int(input())): #케이스
k=int(input()); n=int(input())
list=[i for i in range(1,n+1)] #0층
for a in range(k): #k번
for j in range(1,n): #n-1번; (index 0은 항상 1이므로 제외)
list[j]=list[j]+list[j-1] #갱신
print(list[n-1])
|
cs |
n호는 리스트상 인덱스 n-1이다.