요구능력 : 규칙찾기, 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])")
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 1978번 (소수) (0) | 2021.08.06 |
---|---|
Swift) 백준 2839번 (설탕 배달) (0) | 2021.08.06 |
Swift) 백준 10250번 (ACM호텔) (0) | 2021.08.06 |
Swift) 백준 2869번(달팽이는 올라가고 싶다) (0) | 2021.08.06 |
Swift) 백준 1193번(분수찾기) (0) | 2021.08.05 |
댓글