[백준] 2775번 : 부녀회장이 될테야
문제
나의 첫번째 답안
T=int(input())
def floor(a,b):
s=0
if a==0:
return b
for i in range(b,0,-1):
s+=floor(a-1,i)
return s
for i in range(T):
k,n=int(input()),int(input())
print(floor(k,n))
자신의 층을 기준으로 '아래층의 1호부터 n호까지 사람들의 수를 합한 만큼의 사람을 데려와야 한다'라는 조건에 재귀함수를 생각했다.
따라서 함수 floor를 선언해 테스트케이스 수 만큼 반복 호출하도록 하였다.
그러나 백준에서는 재귀함수 사용 시 시간초과가 나는 경우가 많다고 한다..
따라서 해당 코드를 재귀함수를 사용하지 않는 방식으로 수정하고자 하였다.
나의 두번째 답안
T=int(input())
for i in range(T):
k,n=int(input()),int(input())
s=[i for i in range(1,n+1)] #리스트 생성, 1호~n호
for a in range(k): #층
for j in range(1,n): #호
s[j]+=s[j-1] #각 호에 거주하는 사람 수 합
#print('s:',a,'층',s)
print(s[-1]) #마지막 수(=총 거주 수)
이번에는 재귀함수 대신 리스트를 사용하도록 수정하였다.
1호부터 입력받은 호(n)를 저장할 수 있도록 리스트를 생성하였다.
이후, 각 층마다 1호~n호에 접근하여 각 호에 거주하는 사람 수의 합을 구하였다.
마지막으로 print(s[-1])
로 배열의 마지막 인덱스에 접근하여
각 층에 거주하는 전체 사람의 수를 출력하도록 하였다.
Author And Source
이 문제에 관하여([백준] 2775번 : 부녀회장이 될테야), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yj_lee/백준-2775번-부녀회장이-될테야저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)