๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ๋ถˆ! BOJ #4179

by seolhee2750 2021. 10. 2.
๋ฌธ์ œ ์„ค๋ช…

์ง€ํ›ˆ์ด๋Š” ๋ฏธ๋กœ์—์„œ ์ผ์„ ํ•œ๋‹ค. ์ง€ํ›ˆ์ด๋ฅผ ๋ฏธ๋กœ์—์„œ ํƒˆ์ถœํ•˜๋„๋ก ๋„์™€์ฃผ์ž!

๋ฏธ๋กœ์—์„œ์˜ ์ง€ํ›ˆ์ด์˜ ์œ„์น˜์™€ ๋ถˆ์ด ๋ถ™์€ ์œ„์น˜๋ฅผ ๊ฐ์•ˆํ•ด์„œ ์ง€ํ›ˆ์ด๊ฐ€ ๋ถˆ์— ํƒ€๊ธฐ์ „์— ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€, ๊ทธ๋ฆฌ๊ณ  ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค.

์ง€ํ›ˆ์ด์™€ ๋ถˆ์€ ๋งค ๋ถ„๋งˆ๋‹ค ํ•œ์นธ์”ฉ ์ˆ˜ํ‰๋˜๋Š” ์ˆ˜์ง์œผ๋กœ(๋น„์Šค๋“ฌํ•˜๊ฒŒ ์ด๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค)  ์ด๋™ํ•œ๋‹ค. 

๋ถˆ์€ ๊ฐ ์ง€์ ์—์„œ ๋„ค ๋ฐฉํ–ฅ์œผ๋กœ ํ™•์‚ฐ๋œ๋‹ค. 

์ง€ํ›ˆ์ด๋Š” ๋ฏธ๋กœ์˜ ๊ฐ€์žฅ์ž๋ฆฌ์— ์ ‘ํ•œ ๊ณต๊ฐ„์—์„œ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ง€ํ›ˆ์ด์™€ ๋ถˆ์€ ๋ฒฝ์ด ์žˆ๋Š” ๊ณต๊ฐ„์€ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‘ ์ •์ˆ˜ R๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, 1 ≤ R, C ≤ 1000 ์ด๋‹ค. R์€ ๋ฏธ๋กœ ํ–‰์˜ ๊ฐœ์ˆ˜, C๋Š” ์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

๋‹ค์Œ ์ž…๋ ฅ์œผ๋กœ R์ค„๋™์•ˆ ๊ฐ๊ฐ์˜ ๋ฏธ๋กœ ํ–‰์ด ์ฃผ์–ด์ง„๋‹ค.

 ๊ฐ๊ฐ์˜ ๋ฌธ์ž๋“ค์€ ๋‹ค์Œ์„ ๋œปํ•œ๋‹ค.

  • #: ๋ฒฝ
  • .: ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„
  • J: ์ง€ํ›ˆ์ด์˜ ๋ฏธ๋กœ์—์„œ์˜ ์ดˆ๊ธฐ์œ„์น˜ (์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„)
  • F: ๋ถˆ์ด ๋‚œ ๊ณต๊ฐ„

J๋Š” ์ž…๋ ฅ์—์„œ ํ•˜๋‚˜๋งŒ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ง€ํ›ˆ์ด๊ฐ€ ๋ถˆ์ด ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ๋ฏธ๋กœ๋ฅผ ํƒˆ์ถœ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ IMPOSSIBLE ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ง€ํ›ˆ์ด๊ฐ€ ๋ฏธ๋กœ๋ฅผ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ํƒˆ์ถœ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค. 

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์ž…๋ ฅ

4 4
####
#JF#
#..#
#..#

์ถœ๋ ฅ

3

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
import Foundation

let size = readLine()!.split(separator: " ").map({Int(String($0))!})
let n = size[0] // ๊ฐ€๋กœ ์นธ ์ˆ˜
let m = size[1] // ์„ธ๋กœ ์นธ ์ˆ˜
var maze = [[String]]() // ์ฃผ์–ด์ง„ ๋ฏธ๋กœ
var queue_J = [(Int, Int)]() // ์ง€ํ›ˆ์ด ํ
var queue_F = [(Int, Int)]() // ๋ถˆ ํ
let dx = [-1, 1, 0 , 0], dy = [0, 0, -1, 1] // ์ƒํ•˜์ขŒ์šฐ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ขŒํ‘œ ๋ณ€ํ™”๋Ÿ‰
var result = 0 // ํƒˆ์ถœ ์‹œ๊ฐ„

func Fire(_ next: inout [(Int, Int)]) {
    // ๊ธฐ์กด ๋ถˆ ํ์— ๋“ค์–ด์žˆ๋Š” ์ž๋ฆฌ๋“ค์„ ๋ชจ๋‘ ๊ฒ€์‚ฌ!
    for i in 0..<queue_F.count {
        let (x, y) = queue_F[i]
        
        for j in 0..<4 {
            let nx = x + dx[j]
            let ny = y + dy[j]
            
            // ๋ฏธ๋กœ ๋ฒ”์œ„ ์•ˆ์—์„œ "."์„ ๋งŒ๋‚œ ๊ฒฝ์šฐ ๋ถˆ์ด ์ „ํŒŒ๋˜์—ˆ์Œ์„ "F"๋กœ ํ‘œ์‹œ
            if 0 <= nx && 0 <= ny && nx < n && ny < m {
                if maze[nx][ny] == "." {
                    maze[nx][ny] = "F"
                    next.append((nx, ny)) // ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ๋นˆ ๋ฐฐ์—ด next์— ์ „ํŒŒ๋œ ์ขŒํ‘œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€
                }
            }
        }
    }
}

func Jihoon(_ next: inout [(Int, Int)]) -> Bool {
    // ๊ธฐ์กด ์ง€ํ›ˆ์ด ํ์— ๋“ค์–ด์žˆ๋Š” ์ž๋ฆฌ๋“ค์„ ๋ชจ๋‘ ๊ฒ€์‚ฌ!
    for i in 0..<queue_J.count {
        let (x, y) = queue_J[i]
        
        for j in 0..<4 {
            let nx = x + dx[j]
            let ny = y + dy[j]
            
            // ๋ฏธ๋กœ ๋ฒ”์œ„ ์•ˆ์—์„œ "."์„ ๋งŒ๋‚œ ๊ฒฝ์šฐ "J"๋กœ ํ‘œ์‹œ
            if 0 <= nx && 0 <= ny && nx < n && ny < m {
                if maze[nx][ny] == "." {
                    maze[nx][ny] = "J"
                    next.append((nx,ny)) // ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ๋นˆ ๋ฐฐ์—ด next์— ์ด๋™ํ•œ ์ขŒํ‘œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€
                }
            }
            // ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฒ”์œ„๊ฐ€ ๋ฏธ๋กœ ๋ฐ–์ด๋ผ๋ฉด ์ง€ํ›ˆ์ด๋Š” ํƒˆ์ถœ์— ์„ฑ๊ณตํ•œ๊ฒƒ,!! ๋”ฐ๋ผ์„œ true ๋ฆฌํ„ด
            else { return true }
        }
    }
    return false
}


// ===== ===== ===== ๋ฉ”์ธ ์‹คํ–‰ ===== ===== =====

for _ in 0..<n {
    maze.append(Array(readLine()!).map({String($0)}))
}

for x in 0..<n {
    for y in 0..<m {
        if maze[x][y] == "J" { queue_J.append((x, y)) } // ์ฒ˜์Œ ์ง€ํ›ˆ์ด์˜ ์œ„์น˜ ์ €์žฅ
        else if maze[x][y] == "F" { queue_F.append((x, y)) } // ์ฒ˜์Œ ๋ถˆ์˜ ์œ„์น˜ ์ €์žฅ
    }
}

while true {
    // (๋ฐ˜๋ณต๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋นˆ ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ์„ ์–ธ)
    var next_J = [(Int, Int)]() // ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ์ง€ํ›ˆ์ด์˜ ์œ„์น˜๋“ค
    var next_F = [(Int, Int)]() // ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ๋ถˆ์˜ ์œ„์น˜๋“ค
    
    // ๋”์ด์ƒ ํƒ์ƒ‰ํ•  ์ง€ํ›ˆ์ด๊ฐ€ ์—†์„ ๋•Œ (์ „๋ถ€ ์ด๋ฏธ ๋ถˆ๊ณผ ๋งŒ๋‚ฌ๊ฑฐ๋‚˜ ๋ฒฝ์— ๋ถ€๋”ชํ˜”์Œ)
    if queue_J.isEmpty { print("IMPOSSIBLE"); break }
    
    result += 1 // ์ง€ํ›ˆ์ด๋ž‘ ๋ถˆ์ด ํ•œ ๋ฒˆ ์ฃผ๋ณ€์œผ๋กœ ํผ์ ธ๋‚˜๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋ˆ„์ ๋˜๋Š” ๊ฐ’ => ํƒˆ์ถœ ์‹œ๊ฐ„ ์ธก์ •
    
    Fire(&next_F) // ๋ถˆ ํผ์ ธ๋‚˜๊ฐ€๋Š” ์‹คํ–‰
    
    // ์ง€ํ›ˆ์ด๊ฐ€ ํƒˆ์ถœํ•˜๋Š” ์‹คํ–‰์œผ๋กœ, ํƒˆ์ถœ์— ์„ฑ๊ณตํ–ˆ์„ ์‹œ(true) result๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋!
    if Jihoon(&next_J) == true { print(result); break }
    
    // ์ง€ํ›ˆ์ด ์ด๋™ ํ์™€ ๋ถˆ ์ด๋™ ํ์— ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋œ ํ ๋„ฃ์–ด์ฃผ๊ธฐ
    queue_J = next_J
    queue_F = next_F
}

๐Ÿ‘‰์ง€ํ›ˆ์ด์™€ ๋ถˆ์ด ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜๋ฅผ ๋ฏธ๋ฆฌ ์ฐพ๊ณ , ๊ฐ๊ฐ์˜ bfs๋ฅผ ๋”ฐ๋กœ ๋Œ๋ ค์•ผํ•œ๋‹ค๋Š” ์ ์ด ํฌ์ธํŠธ,!

์ง€ํ›ˆ์ด๊ฐ€ ์›€์ง์ด๋Š” ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ํ•จ์ˆ˜์™€ ๋ถˆ์ด ์›€์ง์ด๋Š” ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๊ณ ,
ํ•œ ๋ฒˆ์— ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์”ฉ๋งŒ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ '๋™์‹œ์—' ๋ฐ˜๋ณตํ•˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

  • ์šฐ์„  ์ง€ํ›ˆ์ด์˜ ์ž๋ฆฌ๋ฅผ ๋‹ด์„ queue_J, ๋ถˆ์˜ ์ž๋ฆฌ๋ฅผ ๋‹ด์„ queue_F๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ 
    2์ค‘ for๋ฌธ์„ ์ด์šฉํ•ด J๋ฅผ ์ฐพ์œผ๋ฉด queue_J์—, F๋ฅผ ์ฐพ์œผ๋ฉด ๊ทธ ์ž๋ฆฌ๋ฅผ queue_F์— ๋‹ด์•˜๋‹ค.
  • while๋ฌธ์œผ๋กœ ์‹คํ–‰์„ ๋ฐ˜๋ณตํ–ˆ๋Š”๋ฐ, ๋ฐ˜๋ณต๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์œ„์น˜๋ฅผ ๋‹ด์„ ํ next_J, next_F๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. 
    1) queue_J๊ฐ€ ๋น„๊ฒŒ๋˜์—ˆ๋‹ค๋ฉด ๋”์ด์ƒ ํƒ์ƒ‰ํ•  ์ง€ํ›ˆ์ด์˜ ์ž๋ฆฌ๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ธ๋ฐ,
    ์ด๋•Œ๊นŒ์ง€ Jihoonํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ์ธํ•œ ์‹คํ–‰ ์ข…๋ฃŒ๊ฐ€ ์—†์—ˆ๋˜ ๊ฒƒ์ด๋ฏ€๋กœ
    ์ง€ํ›ˆ์ด๋Š” ํƒˆ์ถœ์— ์‹คํŒจํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ IMPOSSIBLE์„ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.
    2) ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ์ง€ํ›ˆ์ด๊ฐ€ ํƒˆ์ถœํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด์•ผํ•˜๋ฏ€๋กœ result์— 1์„ ๋ˆ„์ ํ–ˆ๋‹ค.
    3) ๊ทธ๋ฆฌ๊ณ  Fire, Jihoonํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ
    ํ˜„์žฌ ๊ฐ ํ์— ๋‹ด๊ฒจ์žˆ๋Š” ์ž๋ฆฌ๋“ค์ด 'ํ•œ ๋ฒˆ์”ฉ' ์˜†์œผ๋กœ ํผ์ ธ๋‚˜๊ฐ€๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์ฃผ์—ˆ๋‹ค.
    Jihoon ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ true๋ผ๋ฉด ํƒˆ์ถœ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ์‹คํ–‰์„ ์ข…๋ฃŒํ•œ๋‹ค.
    4) ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ์กด ํ๋ฅผ ๋‹ค์Œ๋ฒˆ ๋ฐ˜๋ณต์—์„œ ํƒ์ƒ‰ํ•ด์•ผํ•  ์ž๋ฆฌ๋“ค๋กœ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค.
  • Fire์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๋ถˆ์˜ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” bfsํ•จ์ˆ˜๋ฅผ ๋จผ์ € ํ™•์ธํ•ด๋ณด์ž.
    for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด ํ์— ๋“ค์–ด์žˆ๋˜ ๋ชจ๋“  ์ž๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•ด์ฃผ์—ˆ๋‹ค.
    ํ•˜์œ„ for๋ฌธ์—์„œ ๋”ฑ 4๋ฒˆ ๋ฐ˜๋ณต์„ ํ•˜์—ฌ ์ž๋ฆฌ๋งˆ๋‹ค ์ƒํ•˜์ขŒ์šฐ๋กœ ํƒ์ƒ‰ํ–ˆ๋Š”๋ฐ,
    ๋ฏธ๋กœ์˜ ๋ฒ”์œ„ ์•ˆ์—์„œ "."์„ ๋งŒ๋‚ฌ๋‹ค๋ฉด "F"๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ถˆ์ด ํผ์กŒ์Œ์„ ํ‘œ์‹œํ–ˆ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  inout์œผ๋กœ ๋ฐ›์€ ๋นˆ ๋ฐฐ์—ด next์— ๋‹ค์Œ๋ฒˆ ํ•จ์ˆ˜ ์‹คํ–‰์—์„œ ํƒ์ƒ‰ํ•ด์•ผํ•  ์ž๋ฆฌ๋“ค์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.
    => ์ด Fireํ•จ์ˆ˜๋Š” ์‹คํ–‰์˜ ๊ฒฐ๊ณผ๋กœ ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ์ƒˆ๋กœ์šด ๋ถˆ ํ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š”๊ฒƒ,!!
  • Jihoon์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ง€ํ›ˆ์ด์˜ ํƒˆ์ถœ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” bfsํ•จ์ˆ˜๋ฅผ ๋ณด์ž.
    Fire๊ณผ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ํ•˜๋‚˜ ๋‹ค๋ฅธ ์ ์€ Bool ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ๊ฒƒ.
    ์ƒˆ๋กœ ํƒ์ƒ‰ํ•  ์ฐจ๋ก€์ธ ์ž๋ฆฌ๊ฐ€ ๋ฏธ๋กœ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„ ๋‹ค๋ฉด, ์ง€ํ›ˆ์ด๊ฐ€ ํƒˆ์ถœ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋œป!
    ๋”ฐ๋ผ์„œ ์ด ๋•Œ๋Š” true๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ , ๊ทธ ์™ธ์˜ ์ƒํ™ฉ์€ ๋ชจ๋‘ false๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๋‘ ๊ฐœ์˜ bfs๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋‹ˆ๊นŒ ๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์กŒ๊ณ  ๊ทธ๋งŒํผ ์˜ค๋ž˜๊ฑธ๋ฆฐ ๋ฌธ์ œ์˜€๋‹ค.
  • ๋ง‰์ƒ ํ’€๊ณ ๋‚˜๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ์ง„์งœ ๋‹จ์ˆœํ•˜๊ฒŒ bfs ๋‘ ๊ฐœ,,!๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•  ๊ฒƒ ๊ฐ™๊ณ ,,
    ๋‹ค๋งŒ ์กฐ๊ธˆ ๊ณ ๋ คํ•ด์ค˜์•ผํ•  ์ ์€ ์ผ๋ฐ˜์ ์ธ bfs ๋ฌธ์ œ๋“ค์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ํ๋ฅผ ๊ฐ€์ง€๊ณ 
    ๊ณ„์† ํƒ์ƒ‰ํ•  ์ž๋ฆฌ๋ฅผ ๋’ค์— ์ถ”๊ฐ€ํ•ด๊ฐ€๋ฉด์„œ ํ๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด,
    ์ด ๋ฌธ์ œ๋Š” ๋‘ ๊ฐœ์˜ bfs๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜์–ด์•ผํ•˜๋ฏ€๋กœ ๊ธฐ์กด์˜ ํ์— ๋ฐ”๋กœ
    ์ƒˆ๋กœ์šด ํƒ์ƒ‰ ์ž๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋ชจ์•„๋’€๋‹ค๊ฐ€,,!
    ๋ถˆ๊ณผ ์ง€ํ›ˆ์ด ๋‘˜๋‹ค ํ•œ ๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ์ด๋™์ด ๋๋‚˜๋ฉด ๊ทธ ๋•Œ ํ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•ด์•ผํ–ˆ๋‹ค.

 


 

๋ฌธ์ œ

https://www.acmicpc.net/problem/4179

๋Œ“๊ธ€