잘못된코드:
import Foundation
//var a = [Int:[Int]]()
//a[3] = [5,7]//되네
var info = readLine()!.components(separatedBy: " ").compactMap{Int($0)}
var rectTwoPoint : [Int:[Int]] = [Int:[Int]]()//만드는법 살펴보기.
for index in 0..<info.last! {
var line = readLine()!.components(separatedBy: " ").compactMap{Int($0)}
rectTwoPoint[index] = [line[0],line[1],line[2],line[3]]
}
var rectAxises = [[Int]]()
for rect in rectTwoPoint.values{
for x in rect[0]...rect[2]{
for y in rect[1]...rect[3]{
if !rectAxises.contains([x,y]){
rectAxises.append([x,y])
}
}
}
}
print(rectAxises)
var allGraph : [[Int]] = [[Int]]()
for M in 0...info[1] {
for N in 0...info[0]{
allGraph.append([M,N])//init되고 append 가능.
}
}
print(allGraph)
var residualGraph = Set(allGraph)
residualGraph.subtract(Set(rectAxises))
var go : [[Int]] = [[Int]]()
var result : Int = 0
var visit : [[Bool]] = Array(repeating: Array(repeating: true, count: info[1]+1), count: info[0]+1)
print(visit)
print(info[1])//7
print(info[0])//5
for a in residualGraph {
visit[a[1]][a[0]] = false
}
print(123)
print(residualGraph)
print(visit)
var resultArray = [Int]()
var numberOf = 0
for point in residualGraph{
numberOf = 0
if visit[point[1]][point[0]] == true {//[3,0]
continue
}
go.append(point)//[[3,0]]
while !go.isEmpty{
var last = go.popLast()!
if visit[last[1]][last[0]] == true {
continue
}
print("last: \(last[0]),\(last[1])")
visit[last[1]][last[0]] = true
var filtered = residualGraph.filter{
if $0[0] == last[0] + 1 && $0[1] == last[1]{
if visit[$0[1]][$0[0]] == false{
numberOf += 1
print("\($0[0]),\($0[1])발견1")
return true
}
else {return false}
}
if $0[0] == last[0] - 1 && $0[1] == last[1]{
if visit[$0[1]][$0[0]] == false{
numberOf += 1
print("\($0[0]),\($0[1])발견2")
return true
}
else {return false}
}
if $0[0] == last[0] && $0[1] == last[1] + 1{
if visit[$0[1]][$0[0]] == false{
numberOf += 1
print("\($0[0]),\($0[1])발견3")
return true
}
else {return false}
}
if $0[0] == last[0] && $0[1] == last[1] - 1{
if visit[$0[1]][$0[0]] == false{
numberOf += 1
print("\($0[0]),\($0[1])발견4")
return true
}
else {return false}
}
return false
}
go += Array(filtered)
}
result += 1
if numberOf == 0 { numberOf = 1}
resultArray.append(numberOf)
print("result: \(result)")
print("numberOf: \(numberOf)")
}
print(result)
print(resultArray.sorted())
깨달은것:
//var a = [Int:[Int]]()
//a[3] = [5,7]//되네