본문 바로가기
코딩테스트 준비/백준

[백준 2775번] 부녀회장이 될테야

by rahites 2022. 1. 2.

 

생각보다 코드를 짜는데 시간이 걸렸던 문제였다. 과거 java로 풀었었던 문제와 비슷하다고 생각해 하나의 리스트를 두고 누적해서 바꿔주면 되겠다고 생각했는데 반복문을 중첩해서 사용하다보니 머리에 무리가 간듯하다.

 

- 제출 코드

T = int(input())
k = []
n = []
floor = []
for i in range(T):
    k.append(int(input()))
    n.append(int(input()))
    floor.append([j for j in range(1,n[i]+1)]) # 0층 리스트


for i in range(T):
    for _ in range(k[i]):
        for j in range(len(floor[i])):
            if j==0:
                floor[i][j] = 1
            else:
                floor[i][j] = floor[i][j-1] +floor[i][j]
    print(floor[i][-1])

생각보다 코드 설명은 단순하다. 입력받은 층과 호를 따로 리스트에 저장해두고 각 단계에 맞게 해당 호수까지 0층에 사는 사람수를 floor리스트에 이중으로 넣어주었다. 

그리고 3중 for문을 사용해 첫번째 반복문에서는 입력받은 횟수를 반복시켰고 두번째는 몇층에 사는지 입력받은 만큼 반복하였다. 마지막으로는 호수를 계산해 살고 있는 호수까지 반복을 해주었다.

 

위부터 0층 밑으로 층수가 내려간다고 생각했고 ( 실제는 반대지만 ) 만약 2층 3호를 입력받았다면 3행 * 2열 크기의 직사각형 형태가 주어졌다고 생각했다.

 

밥을 안먹었더니 머리가 굳어 푸는데 오래걸린것 같다

댓글