๋ฌธ์ :
https://www.acmicpc.net/problem/2468
๋ถ์ :
๋ฌธ์ ์ ์์ ์์ญ์ ์ ์๋ฅผ ์ฒ์์ ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ค. ๊ทธ๋์ ์ผ๋งํผ์ ์ฅ๋ง๊ฐ ๋ด๋ฆฐ๋ค๊ตฌ ? ํ๋๋ฐ ๋ชจ๋ ์ฅ๋ง ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๊ฒ์ฌํด ์์ ์์ญ์ด ์ต๋๊ฐ ๋ ๋ ์์ ์์ญ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ผ๋ ๋ป์ด์๋ค.
bfs๋ฅผ ๋์ visit๋ฐฐ์ด์ false์ธ ์์ญ์ true๋ก ๋ง๋ค๊ณ ๋๋ด๊ณ ์ค๋ฉด bfsAll ํจ์์์ ํ๋์ฉ cnt + 1 ํ์ฌ ์์ ์์ญ์ ๊ฐ์๋ฅผ ๊ตฌํด์ค๋ค.
๊ทธ ์ ์ visit ๋ฐฐ์ด์ ์์ ์์ญ ๋์ด 0๋ถํฐ ์์ํด ์ด๋ ๋์ด๊น์ง ๊ฒ์ฌํ ํ ๊ฐ๊ฐ ๋ฌธ์ ์ธ๋ฐ input์ arr๋ฐฐ์ด ์์ ์ต๋๊ฐ์ maxNumber์ ๊ธฐ๋กํด ๋๋ค ๋งค๋ฒ bfsAll ๋ฐฐ์ด์ ๋๊ธฐ์ visit ๋ฐฐ์ด์ ์ด๊ธฐํ ์์ผ ์ฃผ์๊ณ ๋ง์ง๋ง์ totalArea์ ์ต๋๊ฐ์ ๊ตฌํ๋๋ก ํ๋ค.
swift ํ์ด :
//
// main.swift
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/03/11.
//
import Foundation
var n = Int(readLine()!)!
var arr: [[Int]] = Array(repeating: Array(repeating: 0, count: n), count: n)
var visit = Array(repeating: Array(repeating: false, count: n), count: n)
var dx = [-1, 1, 0, 0]
var dy = [0, 0, 1, -1]
func bfs(_ i: Int, _ j: Int){
visit[i][j] = true
var qu = [(Int, Int)]()
qu.append((i, j))
while(!qu.isEmpty){
let nx = qu.last!.0
let ny = qu.last!.1
qu.removeLast()
for i in 0..<4 {
let nextX = nx + dx[i]
let nextY = ny + dy[i]
if(nextX >= n || nextX < 0 || nextY >= n || nextY < 0) { continue }
if(visit[nextX][nextY]) { continue }
//print("\(nextX) \(nextY)")
visit[nextX][nextY] = true
qu.append((nextX, nextY))
}
}
}
func bfsAll() -> Int {
var cnt = 0;
for i in 0..<n {
for j in 0..<n {
if(!visit[i][j]){
bfs(i, j)
cnt += 1
}
}
}
return cnt
}
var totalArea = 0
var maxNumber = 0
for i in 0..<n {
let line = readLine()!.split(separator: " ").map { Int($0)! }
for j in 0..<line.count {
arr[i][j] = line[j]
if(arr[i][j] > maxNumber){
maxNumber = arr[i][j]
}
}
}
for k in 0..<maxNumber {
for i in 0..<n {
for j in 0..<n {
if(arr[i][j] <= k){
visit[i][j] = true
}
}
}
totalArea = max(bfsAll(), totalArea)
visit = Array(repeating: Array(repeating: false, count: n), count: n) // ๋ค์ ์ด๊ธฐํ
}
print(totalArea)โ
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] Swift 1300 k๋ฒ์งธ ์ BS(Bineary Search) (0) | 2022.03.31 |
---|---|
[๋ฐฑ์ค] Swift 1806 ๋ถ๋ถํฉ ํฌํฌ์ธํฐ (0) | 2022.03.29 |
[๋ฐฑ์ค] 1516 ๊ฒ์ ๊ฐ๋ฐ (0) | 2022.03.03 |
[๋ฐฑ์ค] 2630 ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2022.02.24 |
[๋ฐฑ์ค] 3020 ๊ฐ๋ฅ๋ฒ๋ prefix sum(๋์ ํฉ) (0) | 2022.02.21 |
๋๊ธ