๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ˜  | Platinum

[Kotlin, P4] ๋ฐฑ์ค€ 10000๋ฒˆ ์› ์˜์—ญ

by immgga 2024. 10. 14.

์ถœ์ฒ˜: unsplash.com

 

์› ์˜์—ญ(10000๋ฒˆ)

Platinum 4

#์ž๋ฃŒ ๊ตฌ์กฐ #์ •๋ ฌ #๊ธฐํ•˜ํ•™ #์Šคํƒ

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

 

๋ฌธ์ œ ๋‚ด์šฉ

 

๋ฌธ์ œ ์ ‘๊ทผ

์šฐ์„  ๋ฌธ์ œ ์ดํ•ด๋ถ€ํ„ฐ ํ•ด๋ณด์ž.

๊ฐ„๋‹จํ•˜๋‹ค.

์›์„ x์ถ•์— ๊ตฌ์„ฑํ•˜๊ณ  ๋‚œ ํ›„, ์˜์—ญ์„ ์„ธ๋ฉด ๋œ๋‹ค. ์˜์—ญ์˜ ๊ฐœ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ๋ฉด ๋œ๋‹ค.

์ถœ์ฒ˜: https://wonyoung2257.tistory.com/79

 

์›์˜ ์˜์—ญ๊ณผ ์›๋ผ๋ฆฌ ์ ‘ํ•˜๋ฉด์„œ ๋‚˜๋‰œ ์˜์—ญ๋„ ์ƒ๊ฐํ•ด์•ผ ํ•˜๊ณ , ์› ๋ฐ”๊นฅ์˜ ์˜์—ญ๋„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์›๋ผ๋ฆฌ ์ ‘ํ•˜๋ฉด์„œ ๋‚˜๋‰˜๊ฒŒ ๋˜๋Š” ์˜์—ญ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ต๋‹ค.

 

์ดˆ๊ธฐ ๊ตฌํ˜„ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค.

https://wonyoung2257.tistory.com/79

 

[๋ฐฑ์ค€ python] 10000๋ฒˆ ์› ์˜์—ญ

[๋ฐฑ์ค€ python] 10000๋ฒˆ ์› ์˜์—ญ ๋ ˆ๋ฒจ: ํ”Œ๋ ˆํ‹ฐ๋„˜5 ์–ธ์–ด: ํŒŒ์ด์ฌ https://www.acmicpc.net/problem/10000 ๐Ÿ“‘ํ’€์ด ๊ณผ์ • ์ผ๋‹จ ์ด ๋ฌธ์ œ๋Š” ํ’€์ด๊ณผ์ •์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์•„์ด๋””์–ด๋ฅผ ์–ป์–ด์„œ ํ’€์ดํ–ˆ๋‹ค. https://poloh

wonyoung2257.tistory.com

 

์œ„ ์‚ฌ์ง„์˜ ์› ๊ตฌ์กฐ๋ฅผ ๊ด„ํ˜ธ๋กœ ํ‘œํ˜„ํ•˜๋ฉด (()())์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

์‚ฌ์ง„์˜ ๊ฒฝ์šฐ์—๋Š” ์›์ด ๋ชจ๋‘ ์ ‘ํ•ด ์žˆ์ง€๋งŒ ์›์ด ์ ‘ํ•ด์žˆ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์›์ด ์ ‘ํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด์ „ ์›๊ณผ ์ขŒํ‘œ๊ฐ€ ๋™์ผํ•˜๋ฉด ๋‘ ์›์ด ์ ‘ํ•ด์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

์›์ด ์ ‘ํ•ด์žˆ์ง€ ์•Š์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์ถœ์ฒ˜: https://wonyoung2257.tistory.com/79

 

์›์ด ์ ‘ํ•ด์žˆ์ง€ ์•Š์•„์„œ ์˜์—ญ์ด ๋‚˜๋‰˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋กœ์ง์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ?

 

1. ์›์˜ ์ขŒํ‘œ๋ฅผ ๋‹ด์€ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

์›์˜ ์ขŒํ‘œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด ์ค€๋‹ค. ์›์˜ x์ถ•์— ์ ‘ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ขŒํ‘œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค ์™ผ์ชฝ์€ ์—ฌ๋Š” ๊ด„ํ˜ธ("(")๋ฅผ, ์˜ค๋ฅธ์ชฝ์€ ๋‹ซ๋Š” ๊ด„ํ˜ธ(")")๋ฅผ ๋„ฃ์–ด ์ค€๋‹ค.

 

2. ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ

๋ฐ›์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.

์ขŒํ‘œ ์ˆœ์œผ๋กœ ์šฐ์„  ์ •๋ ฌํ•˜๊ณ , ๋‹ซํžŒ ๊ด„ํ˜ธ(")")๊ฐ€ ๋จผ์ € ์˜ค๊ฒŒ ์ •๋ ฌํ•œ๋‹ค.

 

3. ์›์ด ๋๋‚  ๋•Œ์˜ ์ฒ˜๋ฆฌ(์Šคํƒ ์‚ฌ์šฉ)

์ด์ œ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šคํƒ์— ์ง‘์–ด๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์Šคํƒ์—๋Š” ์›์˜ ์œ„์น˜์™€ ๊ด„ํ˜ธ string, ์ด์ „ ์ ๊ณผ ์ ‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ด์ œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค.

 

3-1. ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜จ ๊ฒฝ์šฐ

์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ขŒํ‘œ์™€ ๋น„๊ตํ•ด์„œ ๊ฐ™์€ ์ขŒํ‘œ์ด๋ฉด peek ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ true๋กœ ์„ค์ •ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š”๋‹ค.

 

3-2. ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜จ ๊ฒฝ์šฐ

๋งŒ์•ฝ ํ˜„์žฌ ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๊ฐ€ true๋ผ๋ฉด ์˜์—ญ ์นด์šดํŠธ๋ฅผ 2๊ฐœ๋ฅผ ๋Š˜๋ ค์ฃผ๊ณ  ์•„๋‹ˆ๋ฉด 1๊ฐœ๋ฅผ ๋Š˜๋ ค์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํƒ ๋ฐ์ดํ„ฐ๋ฅผ pop ํ•œ๋‹ค.

 

๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’๊ณผ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ๊ฐ’์˜ ์ขŒํ‘œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ false๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ์ฝ”๋“œ

๋”๋ณด๊ธฐ
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.Stack

private data class Circle(
    val position: Int,
    val circle: String,
    var isContact: Boolean
)

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val n = readLine().toInt()
    val point = mutableListOf<Pair<Int, String>>()

    for (i in 1 .. n) {
        val (x, r) = readLine().split(" ").map { it.toInt() }
        point.add(Pair(x - r, "("))
        point.add(Pair(x + r, ")"))
    }

    point.sortByDescending { it.second }
    point.sortBy { it.first }

    var area = 1
    val stack = Stack<Circle>()
    for (i in 0 until point.size) {
        val current = point[i]

        if (i == 0) stack.add(Circle(current.first ,current.second, false))
        else {
            when (current.second) {
                "(" -> {
                    // ์ด์ „ ์œ„์น˜์™€ ๊ฐ™์€ ์œ„์น˜๋ฉด ์ ‘ํ•ด์žˆ๋Š” ์›์ž„.
                    if (stack.isNotEmpty() && stack.peek().position == current.first) stack[stack.lastIndex].isContact = true
                    stack.add(Circle(current.first, current.second, false))
                }
                ")" -> {
                    if (!stack.peek().isContact) area++
                    else area += 2
                    stack.pop()

                    if (i + 1 in 0 until point.size) {
                        val next = point[i + 1]
                        // ๋‹ค์Œ ์›๊ณผ ์ ‘ํ•ด ์žˆ์ง€ ์•Š์„ ๋•Œ
                        if (stack.isNotEmpty() && next.first != current.first) stack[stack.lastIndex].isContact = false
                    }
                }
            }
        }
    }

    println(area)
}

 

๋ฌธ์ œ ํ’€์ด

์Šคํƒ์— ๊ฐ’์„ ๋„ฃ์„ data class๋ฅผ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

data class์—๋Š” ์ขŒํ‘œ, ์›์˜ ๊ตฌ์„ฑ(๊ด„ํ˜ธ string), ์ ‘ํ•ฉ ์—ฌ๋ถ€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ผ point ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด ์ค€๋‹ค. point ๋ฆฌ์ŠคํŠธ๋Š” pair๋กœ ๊ตฌ์„ฑํ•ด ์ฃผ์—ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ์ขŒํ‘œ, ๋‘ ๋ฒˆ์งธ ๊ฐ’์ด ์›์˜ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ(๊ด„ํ˜ธ string)์ด๋‹ค.

 

๊ตฌ์„ฑํ•œ point list๋ฅผ ๊ด„ํ˜ธ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด ์ฃผ๊ณ  ๊ทธ๋‹ค์Œ ์ขŒํ‘œ๋ณ„๋กœ ์ •๋ ฌํ•ด ์ค€๋‹ค.

๊ทธ๋ž˜์•ผ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋จผ์ € ์˜ค๊ฒŒ ๋˜๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ขŒํ‘œ์ˆœ์„ ๋‚˜์ค‘์— ์„ค์ •ํ•จ์œผ๋กœ์จ ์ขŒํ‘œ ์šฐ์„  ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

์ดˆ๊ธฐ area ๋ฐ์ดํ„ฐ๋Š” 1๋กœ ์„ค์ •ํ•ด ์ค€๋‹ค. ๊ทธ ์ด์œ ๋Š” ์› ๋ฐ”๊นฅ์˜ ์˜์—ญ์„ ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

Circle data class ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” stack์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

point list๋ฅผ ๋ฐ˜๋ณตํ•ด ์ค€๋‹ค.

์ฒซ ๋ฐ˜๋ณต์—๋Š” ๋ฌด์กฐ๊ฑด ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— stack์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด์„œ ์‹œ์ž‘ํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๊ด„ํ˜ธ์— ๋”ฐ๋ผ ํŒ๋‹จํ•ด์„œ ๋กœ์ง์„ ์ ์šฉํ•œ๋‹ค.

 

์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด ์ด์ „์˜ ์› ์•ˆ์— ์ž‘์€ ์›์ด ๋“ค์–ด์˜จ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.

๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ์˜ ์ขŒํ‘œ๊ฐ€ stack์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•˜๋‹ค๋ฉด ๋‘ ์›์ด ์ ‘ํ•ด์žˆ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.

์ด๋Ÿฌ๋ฉด ํฐ ์›์— ์˜์—ญ์ด 2๊ฐœ๊ฐ€ ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํฐ ์›์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ true๋กœ ์„ค์ •ํ•œ๋‹ค.

 

๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด ์ด์ œ ๊ตฌ์—ญ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์ฃผ๋ฉด ๋œ๋‹ค.

๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ๋ฌด์กฐ๊ฑด stack์—๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๊ฒŒ ๋œ๋‹ค.

์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ์ค€๋‹ค. true์ด๋ฉด 2๋ฅผ false๋ฉด 1๊ฐœ์˜ ์˜์—ญ์ด ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ์ดํ„ฐ๋ฅผ stack์—์„œ 1๊ฐœ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์— ๋“ค์–ด์˜ค๊ฒŒ ๋  ๋ฐ์ดํ„ฐ์™€ ํ˜„์žฌ ๋ฐ์ดํ„ฐ์˜ ์ขŒํ‘œ๋ฅผ ๋น„๊ตํ•ด ์ค€๋‹ค. ๋‹ค์Œ ์›๊ณผ ์ขŒํ‘œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ ์›๊ณผ ์ ‘ํ•ด์žˆ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ false๋กœ ์„ค์ •ํ•ด ์ค€๋‹ค.

 

๊ทธ๋ฆผ์œผ๋กœ ๋ฌธ์ œ ๋กœ์ง์„ ์„ค๋ช…ํ•ด ์ฃผ๊ฒ ๋‹ค.

์ถœ์ฒ˜: https://wonyoung2257.tistory.com/79

 

์ด ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ๋‹ค. ํŽธ์˜๋ฅผ ์œ„ํ•ด ๊ฐ€์žฅ ํฐ ์›์„ 2๋ฒˆ ์›, ์ค‘๊ฐ„ ์›์„ 3๋ฒˆ ์›, ์ž‘์€ ์›์„ 4๋ฒˆ ์›์œผ๋กœ ์นญํ•˜๊ฒ ๋‹ค.

  1. ์šฐ์„  ๋จผ์ € ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋Š” 2๋ฒˆ ์›์˜ ์ขŒํ‘œ๋ฅผ ํ™•์ธํ•œ๋‹ค. ์—ฌ๋Š” ๊ด„ํ˜ธ๋กœ ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— circle์— isContact๋ฅผ false๋กœ ์„ค์ •ํ•˜๊ณ  stack์— ๋„ฃ๋Š”๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", false)], area: 1
  2. ๋‹ค์Œ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋Š” 3๋ฒˆ ์›์˜ ์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ์ดํ„ฐ์ด๋‹ค. ํ˜„์žฌ ์ขŒํ‘œ์™€ stack์— ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์™€์˜ ์ขŒํ‘œ๊ฐ€ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ํ˜„์žฌ stack์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ true๋กœ ๋ฐ”๊ฟ”์ค€ ๋‹ค์Œ stack์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", true), Circle(3๋ฒˆ ์›, "(", false)], area: 1
  3. 3๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”๋‹ค. ํ˜„์žฌ stack์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. false์ด๋ฏ€๋กœ area์— 1์„ ๋”ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  stack์˜ ๊ฐ’ 1๊ฐœ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", true)], area: 2
  4. ๋‹ค์Œ ์›์˜ ์ขŒํ‘œ๋ฅผ ํ™•์ธํ•œ๋‹ค(4๋ฒˆ ์›์˜ ์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ์ดํ„ฐ). ๋‹ค์Œ ์›์˜ ์ขŒํ‘œ ๋ฐ์ดํ„ฐ์™€ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ(3๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ)๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— stack์— ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ false๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", false)], area: 2
  5. 4๋ฒˆ ์›์˜ ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”๋‹ค. ํ˜„์žฌ stack์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์™€ ํ˜„์žฌ ๋ฐ์ดํ„ฐ์˜ ์ขŒํ‘œ๋ฅผ ๋น„๊ตํ•œ๋‹ค. ์ขŒํ‘œ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค. ๊ทธ๋ž˜์„œ stack์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ false๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  stack์— ๋„ฃ์–ด ์ค€๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", false), Circle(4๋ฒˆ ์›, "(", false)], area: 2
  6. 4๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”๋‹ค. ํ˜„์žฌ stack์˜ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค. false์ด๋ฏ€๋กœ area์— 1์„ ๋”ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  stack์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", false)], area: 3
  7. ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” 2๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ์ด๋‹ค. ๋‹ค์Œ ๋ฐ์ดํ„ฐ์™€ ํ˜„์žฌ ๋ฐ์ดํ„ฐ(4๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ)์˜ ์ขŒํ‘œ๋ฅผ ๋น„๊ตํ•œ๋‹ค. ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— stack ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์—ฌ๋ถ€๋ฅผ false๋กœ ์„ค์ •ํ•ด ์ค€๋‹ค.
    stack: [Circle(2๋ฒˆ ์›, "(", false)], area: 3
  8. ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ์ธ 2๋ฒˆ ์›์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”๋‹ค. ํ˜„์žฌ stack์˜ ์ตœ์ƒ๋‹จ ๋ฐ์ดํ„ฐ์˜ ์ ‘ํ•ฉ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค. false์ด๋ฏ€๋กœ area์— 1์„ ๋”ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  stack์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    stack: [], area: 4
  9. stack์ด ๋น„์–ด์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ, ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ๋ฐ์ดํ„ฐ์™€ ๋น„๊ตํ•˜๋Š” ๋กœ์ง์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  10. ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ ํ›„ ์ตœ์ข… area๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด 4๊ฐ€ ๋œ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

๋ฌธ์ œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ณด๊ณ ๋„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์›Œ์„œ ์œ„์— ์–ธ๊ธ‰ํ•œ ๋ถ„์˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์„œ ๋กœ์ง์„ ๊ตฌ์„ฑํ•ด ์ฃผ์—ˆ๋‹ค.

๋‚ด ๋‚˜๋ฆ„๋Œ€๋กœ ๋กœ์ง ํ•ด์„์„ ํ†ตํ•ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๊ทธ๊ฒŒ ์ž˜ ์•ˆ๋˜๋”๋ผ.

๋กœ์ง์ด ๋Œ์•„๊ฐ€๋Š” ๊ณผ์ •์„ ๊ธ€๋กœ ์ ์–ด๋ณด๋‹ˆ๊นŒ ์ •๋ฆฌ๋„ ๋˜๊ณ  ์ดํ•ด๊ฐ€ ํ›จ์”ฌ ๋” ์ž˜ ๋˜์—ˆ๋‹ค.

์ขŒํ‘œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์ •๋ ฌํ•˜๊ณ , stack์„ ์‚ฌ์šฉํ•ด ์˜์—ญ์„ ์„ธ์•ผ ํ•˜๋Š” ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค. ํ”Œ๋ž˜ํ‹ฐ๋„˜์ธ ์ด์œ ๊ฐ€ ์žˆ๊ตฌ๋‚˜ ์—ญ์‹œ.

728x90