한 문제에 대한 단순 풀이로 글을 쓰는것을 별로 좋아하지 않지만, 2년 전의 내가 풀었던 풀이를 보고 충격받아서 글을 쓴다.
문제 티어는 브론즈1이다.
아파트 입주 조건은, 입력값과 무관하다. 테스트케이스가 여러개지만 N,K값에 따라서 각 층 각 호에 거주하는 사람의 수는 변하지 않는다는 뜻이다.
0층 i호
에는 항상 i
명이 거주한다.
한 층이 올라갈때마다 전 층의 1호부터 i호까지 거주민의 합을 구하면 된다.
라는 조건이 존재하므로, 15 * 15 크기의 리스트를 만들어준다. (입력 k값은 14지만, 0층이 존재함)
이후 0층을 모두 세팅 해 준다.
따라서 위 수식이 성립한다.
그 다음, 테스트케이스에서 입력받은 k, n값에 따라 출력해주면 된다.
dp = [[0 for j in range(15)] for i in range(15)]
for i in range(14):
dp[14][i+1]=i+1
for i in range(13, -1, -1):
for j in range(1,15):
dp[i][j] = dp[i+1][j]+dp[i][j-1]
for _ in range(int(input())):
n=int(input())
k=int(input())
print(dp[14-n][k])
import sys
input= sys.stdin.readline
case = int(input())
b= []
for i in range(case):
k= int(input())
n= int(input())
a=list(range(1,n+1))
floor = 0
if n == 1 or n == 0:
print(n)
else:
while floor < k:
if not b:
for j in range(0,n):
b.append(sum(a[:j+1]))
if not a:
for j in range(0,n):
a.append(sum(b[:j+1]))
floor +=1
if a[1] > b[1]:
b.clear()
elif a[1] < b[1]:
a.clear()
if not b:
print(a[n-1])
if not a:
print(b[n-1])
a.clear()
b.clear()
대학에 입학한지 한달 반이 되던 날 제출한 코드다.
나름대로 규칙도 정해두고 풀었던 것 같은데.. 무슨 코드인지 이해할수도 없고 저런 풀이도 통과를 했던게 신기하기도 하다
지금부터 2년 뒤의 나도 많이 성장해있길. 화이팅!