본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 2775번 (부녀회장이 될테야)

by Joahnee 2021. 8. 6.

요구능력 : 규칙찾기, 2차원배열

코드설명 : 

문제 설명을 보고 대충 그림을 그려보면 규칙을 찾기 쉽다.

 

2층 1 4 10 20 ...

1층 1 3 6 10 15 ...

0층 1 2 3 4 5 ...

 

이런식으로 가는데, 뚫어지게 보다가 규칙을 찾았다.

왼쪽 호수의 값 + 바로 아래층의 값 = 구하고자하는 층수의 값 이라는 공식이 나온다.

참고로, 맨 왼쪽일 때는 왼쪽값이 없기 때문에 맨 왼쪽일 때는 따로 처리를 해준다.

풀이는 여러가지가 나올 것 같은데 나는 2차원배열로 했다.

i는 층이고, j는 호수다.

i가 0이라는건 0층일 때 인데, 위에서 정한 공식을 적용하기에는 아래층이 없다. 따로처리를 해줬다.

그리고 j가 0이라면 맨 왼쪽 호수이기 때문에 값 1을 넣어줘서 처리한다.

그리고 j가 0이 아니라면 내가 구한 공식이 성립한다.

 

후기 : 규칙구하는건 쉬웠는데, 2차원 배열을 쓰는게 헷갈렸다. 풀다보면 익숙해지겠지..

let T = Int(readLine()!)!
for _ in 1...T {
    let k = Int(readLine()!)!
    let n = Int(readLine()!)!
    var arr = Array(repeating: Array(repeating: 0, count: n + 1), count: k + 1)

    for i in 0...k {
        for j in 0...n {
            if i == 0 {
                arr[i][j] = j + 1

            }else{
                if j == 0 {
                    arr[i][j] = 1
                }else {
                    arr[i][j] = arr[i][j - 1] + arr[i - 1][j]

                }
            }
        }
    }

    print("\(arr[k][n - 1])")
}

 

댓글