ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2775. [Python]부녀회장이 될테야
    Python_알고리즘/Bronze I 2023. 1. 22. 23:21

    1. 문제

     

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

     

    2775번: 부녀회장이 될테야

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

    www.acmicpc.net

     

    2. 접근 방법

     

    • 시간 제한: 1초
    • 메모리 제한: 128MB
    • 2차원 배열을 생성하여 접근

     

    3. 파이썬 코드

     

    T = int(input())
    # 0층은 존재하지 않으므로 1~14호 까지는 직접 넣어주고 나머지 1층부터 14층까지는 0으로 이차원 배열을 생성해준다.
    apt = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14]] + [[0]*14 for _ in range(14)]
    
    # 1층부터 15층까지 배열을 반복
    for i in range(1,15):
    # 1호실부터 14호실까지 반복문
        for j in range(14):
    # 각 호실마다 들어가는 사람의 수는 "현재 층 -1"의 "현재 호수"까지 모든 사람들의 합이므로 3중 for문을 사용함.
            for k in range(j+1):
                apt[i][j] += apt[i-1][k]
    
    # 미리 생성한 아파트 배열을 input값을 넣어주며 출력
    for _ in range(T):
        k = int(input())
        n = int(input())
        print(apt[k][n-1])

     

    4. 문제를 풀고난 후 생각

     

    • 문제를 읽고 어떤식으로 구현을 해야하는지 생각하는데 시간이 소요됐다.
    • Input 값이 들어오는 것마다 값들을 더해주는 것 보다는 수의 범위가 1~14까지로 제한되었기 때문에 이차원 배열을 생성하여 각 배열에 미리 값을 더해둔 후 그 값을 가져오는 식으로 구현하는 것이 좋을 것 같다는 생각이 들어 이차원 배열을 생성하였다.
    • 숫자의 합을 더하거나 숫자들의 누적합등을 계산하는 문제는 미리 배열을 생성하여 계산 후 Input 값으로 조작하는 것이 들어오는 Input 값을 더해나가는 방식보다 시간 복잡도가 적게 소모되는 경우도 있으니 주의해서 문제를 풀자.
    • 배열의 시작이 0부터 시작하는 것과 반복문을 구성할때 배열의 값을 제대로 불러오는지 등 배열 접근 방식에 대해서 잘 이해하는 것이 문제를 풀기에 필요한 기본 조건이였던 것 같다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • 2차원 배열
    • 배열의 개념
    • 반복문

    'Python_알고리즘 > Bronze I' 카테고리의 다른 글

    2869. [Python]달팽이는 올라가고 싶다.  (0) 2023.02.10

    댓글

Designed by Tistory.