본문 바로가기
IT/알고리즘

1일 N알고리즘 - # 19

by Sungjun_ 2020. 5. 20.

문제

https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 <= k <= 14, 1 <= n <= 14)

www.acmicpc.net

문제는 위 사이트를 참고해주세요.

 


풀이

T = int(input())
for x in range(T):
    k = int(input())
    n = int(input())
    apartment = [i for i in range(1, n+1)]
    for i in range(k):
        for j in range(1, n):
            apartment[j] = apartment[j] + apartment[j-1]
    print(apartment[n-1])

 

T는 테스트 케이스의 개수입니다.

먼저 테스트 케이스만큼 for문을 돌립니다.

그 때 층 수와 호수를 입력받고,

apartment에 1부터 n까지 입력 받습니다. ex) n=3, apartment = [1,2,3]

--> 이 과정이 0층의 값을 호수만큼 넣어주는겁니다.

두 번째 for문은 층 수만큼 for문을 돌려줍니다.

세 번째 for문은 각 층수의 호수를 더한 값입니다.

3층 3호의 인원을 구하면

1층 2호까지 사는 사람은 2+1=3, 1층 3호까지 사는 사람은 3+3=6 -----> apartment = [1,3,6]

2층 2호까지 사는 사람은 3+1=4, 2층 3호까지 사는 사람은 6+4=10 -----> apartment = [1,4,10]

3층 2호까지 사는 사람은 4+1=5, 3층 3호까지 사는 사람은 10+5=15 -----> apartment = [1,5,15]


결과

결과 화면

 

 

T = int(input())
apartment = []
for x in range(T):
    k = int(input())
    n = int(input())
    if n == 1:
        print(n)
    else:
        for i in range(0, 15):
            apartment.append([0]*15)
        for i in range(1, 15):
            apartment[0][i] = i
        for i in range(1, 15):
            for j in range(1, 15):
                apartment[i][j] = apartment[i][j-1] + apartment[i-1][j]
        print(apartment[k][n])

 

처음 코드는 위와 같이 조건에 있는 1~14까지 배열을 만들고 값을 저장했습니다.

'IT > 알고리즘' 카테고리의 다른 글

1일 N알고리즘 - #21  (0) 2020.05.21
1일 N알고리즘 - #20  (0) 2020.05.21
1일 N알고리즘 - #18  (0) 2020.05.20
1일 N알고리즘 - #17  (0) 2020.05.19
1일 N알고리즘 - #16  (0) 2020.05.18

댓글