[Baekjoon] 2775. 부녀회장이 될테야

mj·2024년 4월 30일
0

코딩테스트문제

목록 보기
7/50

2775. 부녀회장이 될테야
알고리즘 분류 : 수학 / 구현 / 다이나믹 프로그래밍

a층 b호 : (a-1)층의 1호~b호까지 사람들 수의 합
0층부터, 1호부터 있음.
0층 i호 : i명
k층 n호에는 몇명의 사람이?



🔍 나의 코드

t = int(input())

for _ in range(t):

    k = int(input())
    n = int(input())

    data = [[0]*(n+1) for _ in range(k+1)] #2차원배열 초기화 - k행, n열

    #2차원배열 채우기
    for i in range(k+1):
        for j in range(1, n+1):
            if i==0: 
                data[i][j]=j
            else:
                #i층j호에 사는 사람 수 = (i-1)층의 1~j호에 사는 사람수의 합
                sum = 0
                for y in range(1, j+1):
                    sum += data[i-1][y]
                data[i][j] = sum

    print(data[k][n])

🌀 2차원 리스트 초기화하기

m행 n열의 2차원 리스트

data = [[0]*n for _ in range(m)]

잘못된 방법

list = [[0]*4]*3
list[1][1] = 1
print(list)
# 출력 결과
[[0, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 0, 0]]

분명 list[1][1]만 변화시켰는데 1열의 값이 모두 바뀐다.
왜 그럴까?
이 방식은 리스트를 초기화시킬 때 모든 행이 같은 객체로 인식되기 때문이다.

참고) https://juun42.tistory.com/14

profile
일단 할 수 있는걸 하자.

0개의 댓글