ํฌ๊ฒ ๋ง๋ค๊ธฐ(2812๋ฒ)
Gold 3
#์๋ฃ ๊ตฌ์กฐ #๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ #์คํ
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
n์๋ฆฌ์ ์ซ์๊ฐ ์ฃผ์ด์ง๊ณ , ์ซ์์์ k๊ฐ์ ์ซ์๋ฅผ ๋บ ์ซ์์ ๊ฒฝ์ฐ๋ค ์ค, ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ๋ ฅํด์ผ ํ๋ค.
๊ฐ์ฅ ํฐ ๊ฐ์ ์ป๊ธฐ ์ํด์๋ ๋งจ ์์๋ฆฌ์ ์๊ฐ ์ ์ผ ํฌ๊ณ , ๋ง์ง๋ง ์๋ฆฟ์๊ฐ ์ ์ผ ์์ ๋ด๋ฆผ์ฐจ์์ ์ซ์์ ๊ฐ๊น์์ ธ์ผ ์ ์ผ ์ปค์ง๋ค.
stack์ ๊ฐ์ ๋ฃ์ผ๋ฉด์ ๋ค์ด๊ฐ ๊ฐ๋ณด๋ค ๋ ํฐ ์๊ฐ ๋ค์ด์ค๋ฉด stack์ ๋ค์ด๊ฐ ์ซ์๋ฅผ ๋นผ๋ ๋ฐฉ์์ผ๋ก stack์ ์ฌ์ฉํด์ผ ํ๋ค.
k๋ฒ ์ซ์๋ฅผ ์ง์ฐ๊ณ ๋๋ฉด ๋๋จธ์ง ์ซ์๋ค์ ๊ทธ๋๋ก stack์ ๋ฃ์ด์ ์ถ๋ ฅํด ์ฃผ๋ฉด ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.Stack
private val stack = Stack<Int>()
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val (addCnt, removeCnt) = readLine().split(" ").map { it.toInt() }
val number = readLine().map { it.digitToInt() }
var toRemoveCnt = 0
for (i in number.indices) {
while (stack.isNotEmpty() && toRemoveCnt != removeCnt && stack.peek() < number[i]) {
stack.pop()
toRemoveCnt++
}
if (stack.size < addCnt - removeCnt) stack.add(number[i])
}
println(stack.joinToString(""))
}
๋ฌธ์ ํ์ด
number์ ์ ๋ ฅ๋ฐ์ ์ซ์๋ฅผ listํํ๋ก ๋ฐ์ ์ค๋ค.
์ญ์ ํ ์ซ์์ ๊ฐ์๋ฅผ ์ toRemoveCnt๋ฅผ ์์ฑํ๋ค.
1. ์ผ๋จ ์ฒ์์๋ stack์ด ๋น์ด ์๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ๋ฃ์ด ์ค๋ค. ๋์ค์๋ stack์ size๊ฐ ๋์์ผ ํ๋ ๊ฒฐ๊ณผ ์๋ฆฟ์๋ฅผ ์ค๋ฒํ์ง ์์ ๋๋ง ๊ฐ์ ๋ฃ์ด ์ค๋ค.
2. ๋ ๋ฒ์งธ ์ซ์๋ถํฐ๋ ๋ค์ด์ค๋ ์ซ์๊ฐ stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ๋ฐ๋ณตํด์ stack์์ ์ง์ ์ฃผ๊ณ , ์ญ์ ์นด์ดํธ๋ฅผ ๋๋ฆฐ๋ค.
์ด 2๊ฐ์ง์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค ๋ณด๋ฉด ์ต์ข ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด ์ค๋ช ํด ๋ณด๊ฒ ๋ค.
4177252841์ ์ซ์์์ 4๊ฐ์ ์ซ์๋ฅผ ๋บ ์๋ค ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์ ์ฃผ์ด์ผ ํ๋ค.
๋จผ์ 4๋ถํฐ ์์ํ๋ค.
์ฌ์ง 1-1) stack์ด ๋น์ด ์์ผ๋ฏ๋ก 4๋ ํ๋ฆฌํจ์ค๋ก stack์ ๋ค์ด๊ฐ๊ณ , ๋ค์ ๋ฐ์ดํฐ์ธ 1์ 4๋ณด๋ค ์์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ด๊ฐ ์ ์๋ค.
์ฌ์ง 1-2) 4์ 1์ด ๋ค์ด๊ฐ ๋ค์์๋ 7์ ์ฐจ๋ก์ด๋ค.
stack์ ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๊ฐ์ธ 1๋ณด๋ค 7์ด ๋ ์๊ธฐ ๋๋ฌธ์ stack์์ 1์ pop์ผ๋ก ์ง์ด๋ค.
๋ค์ ๊ฐ์ธ 4๋ 7๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ stack์์ 4๋ฅผ pop์ผ๋ก ์ง์ด๋ค. ๊ทธ๋ฌ๋ฉด ์ด ์ง์ด ์ซ์์ ๊ฐ์๋ 2๊ฐ๊ฐ ๋๋ค.
๋น stack์ 7์ ๋ฃ์ด ์ค๋ค.
์ฌ์ง 1-3) ๋ค์์ ๋ค์ด๊ฐ 7์ stack์ ๋ค์ด๊ฐ ๋ง์ง๋ง ๊ฐ์ธ 7๊ณผ ๊ฐ์ด ๊ฐ๊ธฐ ๋๋ฌธ์ stack์ ๋ฃ๋๋ค.
๋ค์ ๊ฐ์ธ 2๋ 7๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ stack์ ๋ค์ด๊ฐ ์ ์๋ค.
ํ์ง๋ง 5์ ์ฐจ๋ก๊ฐ ๋๋ฉด 5๋ณด๋ค ์์ 2๋ pop ๋๊ณ , 7์ 5๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ pop ๋์ง ์๋๋ค(์ง์ด ์ซ์์ ๊ฐ์๋ 3๊ฐ).
์ฌ์ง 1-4) ๋ค์์ผ๋ก ๋ค์ด๊ฐ 2๋ 5๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ stack์ ๋ค์ด์ฌ ์ ์๋ค.
๋ค์ ๊ฐ์ธ 8์ ์ฐจ๋ก์ด๋ค.
ํ์ฌ stack์ ๋ง์ง๋ง์ผ๋ก ๋ค์ด๊ฐ 2๋ 8๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ 2๋ฅผ stack์์ ์ง์ด๋ค(์ง์ ์ซ์์ ๊ฐ์๋ 4๊ฐ).
๋ค์ stack์ ๋ง์ง๋ง์ผ๋ก ๋ค์ด๊ฐ ์์ธ 5๋ 8๋ณด๋ค ์์ง๋ง ์ง์ ์ซ์๊ฐ ๋ฌธ์ ์์ ์ํ๋ 4๊ฐ๊ฐ ๋ชจ๋ ์ฑ์์ก๊ธฐ ๋๋ฌธ์ 5๋ pop ๋์ง ์๊ณ , 8์ด ๊ทธ๋๋ก stack์ ๋ค์ด๊ฐ๋ค.
์ฌ์ง 1-5) 8 ๋ค์์ผ๋ก ๋จ์ ์ซ์์ธ 4, 1์ด ์ฐจ๋ก๋๋ก stack์ ๋ค์ด๊ฐ๋ฉด์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์์ง๋ค.
์ด์ stack list 7, 7, 5, 8, 4, 1์ ์ซ์๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ์ ๋ต์ธ 775841๊ณผ ์ผ์นํ๊ฒ ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
์ฒ์์๋ ArrayDeque๋ฅผ ์ด์ฉํด ์ํํ๋ฉด์ ํ์ฌ ๊ฐ๊ณผ ๋ค์ ๊ฐ์ ๋น๊ตํด ๋ค์ ๊ฐ์ด ํ์ฌ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ํ์ฌ ๊ฐ์ ์ง์ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์์ง๋ง ์๋์ ๋ฐ๋ก์์ ๋งํ๊ฒ ๋์๋ค.
6 4
321123
output: 3213
answer: 3223
ํ์ฌ ๊ฐ๊ณผ ๋ค์์ ๊ฐ์ ๋น๊ตํ๋ค ๋ณด๋ ์ต์ ์ ๊ฐ์ ์ฐพ์ ์ ์์ด์ ์ฒซ ๋ฒ์งธ 1์ด ๋จ์ ์ต์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ด ๋์ค๊ฒ ๋์๋ค.
์นดํ ๊ณ ๋ฆฌ๊ฐ stack์ด๋ผ์ stack์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฃ๊ณ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ดค์ง๋ง ์๊ฐ๋๋ ๊ฒ ์์๋ค.
๊ฒฐ๊ตญ ํ์ด๋ฅผ ์ฐธ๊ณ ํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธด ํ์ง๋ง, stack์ ๊ฐ์ ๊ตฌํจ๊ณผ ๋์์ ์ ๋ต์ ์์ํ ๊ฐ๊น์์ง๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ด ๋๋๋ผ.
ํ์ด๋ฅผ ๋ณด๊ธฐ ์ ๊น์ง๋ stack์ 2๊ฐ๋ฅผ ๋ง๋ค์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ค ์์๋ค.
stack์ ์ด๋ ๊ฒ๋ ์จ๋จน์ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ํด ์ค ๋ฌธ์ .
'๐ฏ | ๋ฐฑ์ค > ๐ | Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, G1] ๋ฐฑ์ค 1300๋ฒ K๋ฒ์งธ ์ (0) | 2024.09.09 |
---|---|
[Kotlin, G5] ๋ฐฑ์ค 16928๋ฒ ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2024.08.12 |
[Kotlin, G5] ๋ฐฑ์ค 1013๋ฒ Contact (0) | 2024.08.07 |
[Kotlin, G5] ๋ฐฑ์ค 1011๋ฒ Fly me to the Alpha Centauri (0) | 2024.07.30 |
[Kotlin, G5] ๋ฐฑ์ค 7569๋ฒ ํ ๋งํ (0) | 2024.07.29 |