반응형
https://www.acmicpc.net/problem/1012
import Foundation
let t = Int(readLine()!)!
for _ in 1...t {
var l = readLine()!.split(separator: " ").map{ Int(String($0))! }
let k = l[2]
var list:[[Int]] = Array.init(repeating: [0], count: k)
for i in 0...k-1 {
var l = readLine()!.split(separator: " ").map{ Int(String($0))! }
list[i] = ([l[0], l[1]])
}
var dic:[[Int]:Bool] = [:]
let dir = [[0,1],[0,-1],[1,0],[-1,0]]
var c = 0
for i in 0...k-1 {
if dic[[list[i][0], list[i][1]]] == nil {
dic[[list[i][0], list[i][1]]] = true
c += 1
setD(i)
}
}
func setD(_ i:Int) {
for d in dir {
let x = list[i][0]+d[0]
let y = list[i][1]+d[1]
let index = list.firstIndex(of: [x, y]) ?? -1
if index > -1 && dic[[list[index][0], list[index][1]]] == nil {
dic[[list[index][0], list[index][1]]] = true
setD(index)
}
}
}
print(c)
}
반응형
'# 02 > Swift - CTP' 카테고리의 다른 글
[Swift] 코딩테스트 연습! Lv1. 둘만의 암호 (0) | 2023.03.04 |
---|---|
[Swift] 백준! 1931번 - 회의실 배정 (0) | 2023.01.29 |
[Swift] 백준! 2579번 - 계단 오르기 (0) | 2023.01.29 |
[Swift] 백준! 11726번 - 2×n 타일링 (0) | 2023.01.29 |
[Swift] 백준! 11047번 - 동전 0 (0) | 2023.01.29 |