목록바킹독 알고리즘 (21)
쥐수의 공부노트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dz97ov/btson7aDKAj/MYCyoIjWm67fNALlpAVkjK/img.png)
정답 : let input = readLine()!.split(separator: " ").map{Int($0)!} let n = input[0] let m = input[1] let array = readLine()!.split(separator: " ").map{Int($0)!} var cnt = 0 func check ( num : Int, total : Int) { if num == n { if total == m { cnt += 1 } return } check(num: num+1, total: total) check(num: num+1, total: total+array[num]) } check(num: 0, total: 0) if m == 0 { cnt -= 1 } print(cnt) 마지막..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kDIoM/btsn87Qiqq8/c8PUDzmLB5UXWOs8BMHYHK/img.png)
정답 : let n = Int(readLine()!)! var issue1 = Array(repeating: false, count: n) // column을 차지하고 있는지 var issue2 = Array(repeating: false, count: 2 * n - 1) // / 방향 대각선을 차지하고 있는지 var issue3 = Array(repeating: false, count: 2 * n - 1) // \ 방향 대각선을 차지하고 있는지 var cnt = 0 func check(num : Int) { // cur번째 row에 말을 배치할 예정임 if num == n { // N개를 놓는데 성공했다면 cnt += 1 return } for i in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Xgksf/btsnohEu73h/BXTpIsx2V12Kjiq5kajCJk/img.png)
정답 : let input = readLine()!.split(separator: " ").map{Int($0)!} let n = input[0] let m = input[1] var array : [Int] = [] var issue = Array(repeating: false, count: n + 1) func check(num : Int) { if num == m { for i in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNamew/btsjQgjWGvG/2BhpTqTGl5HOaTTBlCkWOK/img.png)
정답 : let n = Int(readLine()!)! var array : [Int] = [] for _ in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UPZQf/btsjAxrYZlY/uP9dwkMViGJbApRtLU57Hk/img.png)
정답 : var array : [Int] = [] var head = 0 var tail = 0 func push(num : Int) { array.append(num) tail += 1 } func pop() { if head == tail { print(-1) } else { print(array[head]) head += 1 } } func size() { print(tail - head) } func front() { print(array[head]) } func back() { print(array[tail-1]) } let n = Int(readLine()!)! for _ in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cA9uoF/btsjmCUhJ3o/jbpDs68QSnJTFSN5Owsik0/img.png)
정답 : let n = Int(readLine()!)! var array : [Int] = [] var pos = 0 func push(num:Int) { array.append(num) pos += 1 } func pop() { var result = -1 if pos != 0 { result = array[pos-1] } print(result) if result != -1 { array.remove(at: pos-1) pos -= 1 } } func size() { var result = array.count print(result) } func empty() { if array.count == 0 { print(1) } else { print(0) } } func top() { var result..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IIzPG/btsitAjpIEM/mkylfJxzxPfyilXGzza0d0/img.png)
정답 : let n = Int(readLine()!)! var array = Array(repeating: 0, count: 1000001) var pre = Array(repeating: 0, count: 10000001) var result : [Int] = [] array[1] = 0 if n == 1 { print(array[1]) print(1) } else { for i in 2...n { array[i] = array[i-1] + 1 pre[i] = i - 1 if i % 3 == 0 && array[i] > array[i/3] + 1{ array[i] = array[i/3] + 1 pre[i] = i/3 } if i % 2 == 0 && array[i] > array[i/2] + 1{ ar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9lYQF/btsiu0H6Nuk/l0LD6ES1eNQcT0kiqk0rq0/img.png)
정답 : let input = readLine()!.split(separator: " ").map{Int($0)!} let n = input[0] let m = input[1] var result : [Int] = [] var array = Array(repeating: 0, count: 100001) var num = readLine()!.split(separator: " ").map{Int($0)!} array[1] = num[0] for i in 2...num.count { array[i] = array[i-1] + num[i-1] } for _ in 0..