본문 바로가기

카테고리 없음

[BOJ] 백준 2775 파이썬 - 부녀회장이 될테야

728x90

 

4층 1 6 21 56 126 252
3층 1 5 15 35 70 126
2층 1 4 10 20 35 56
1층 1 3 6 10 15 21
0층 1 2 3 4 5 6

이런 식으로 0층은 열에 따라 1씩 증가하고 층이 올라가면 구하고자 하는 방의

왼쪽방 인원 + 아래쪽방 인원 을 해주면 해당 방의 인원이 구해지게 된다

 

인원을 지정해주기 전에 미리 해당 방까지 도달하기 위해

0으로 채워진 리스트를 만들어 숫자를 대체하여 저장해 가며 채워나가야 한다.

 

t = int(input())

for i in range(t):
    k = int(input())
    n = int(input())
    resNum = [[0 for col in range(n)]
              for row in range(k+1)]        # 층별로 인원을 구분

 

이렇게 층별로 인원을 구분하여 2차원 리스트를 만들었으면 숫자를 위의 공식대로 숫자를 채워나가면 된다.

    for i in range(len(resNum)):
        for j in range(len(resNum[i])):
            if i > 0:                                               # 0층 아닌 경우
                resNum[i][j] = resNum[i][j-1] + resNum[i-1][j]
            else:                                                   # 0층인 경우
                resNum[i][j] = resNum[i][j-1] + 1

이때 리스트의 인덱스를 지정할 때 인덱스 오류가 나지 않도록 -1을 해주는 것을 잊으면 안 된다.

 

마지막으로 우리가 원하는 값은 우리가 만들었던 리스트의 가장 마지막 값이므로

마지막 값을 출력해주면 된다.

print(resNum[-1][-1])

 

 

[전체 코드]

t = int(input())

for i in range(t):
    k = int(input())
    n = int(input())
    resNum = [[0 for col in range(n)]
              for row in range(k+1)]        # 층별로 인원을 구분
    for i in range(len(resNum)):
        for j in range(len(resNum[i])):
            if i > 0:                                               # 0층 아닌 경우
                resNum[i][j] = resNum[i][j-1] + resNum[i-1][j]
            else:                                                   # 0층인 경우
                resNum[i][j] = resNum[i][j-1] + 1
    print(resNum[-1][-1])

 

728x90