๋ฌธ์์ด ํญ๋ฐ(9935๋ฒ)
Gold 4
#์๋ฃ ๊ตฌ์กฐ #๋ฌธ์์ด #์คํ
https://www.acmicpc.net/problem/9935
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
์ฒซ ๋ฒ์งธ ์ค์ ๋ฌธ์์ด์์ ๋ ๋ฒ์งธ ๋ฌธ์์ด์ด ์กด์ฌํ์ง ์์ ๋๊น์ง ๋ฌธ์์ด์ ์ ๊ฑฐํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ .
๋ฌธ์์ด์ด ์ ๊ฑฐ๋๊ณ ๋จ์ ๋ฌธ์์ด๋ค์ ์๋ก ๋ถ์ด์ ์ ๋ฌธ์์ด์ด ๋๋ค.
๋จ์ํ ๋ฌธ์์ด์ ํ์ธํด ๋ณด๋ฉด์ ๋ฌธ์์ด์ ์ ๊ฑฐํด ๋๊ฐ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์ด๋ค.
๊ทธ๋์ ์ผ๋จ์ replace๋ฅผ ๋ฐ๋ณต์์ผ์ ์งํํด ๋ณด์๋ค.
while (true) {
val replaceRes = string.replace(removeStr, "")
if (replaceRes != string) string = replaceRes
else break
}
๊ฒฐ๊ณผ๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ, ์ ์ด์ replace๋ง์ผ๋ก ํ๋ฆฌ๋ ๊ฑธ ๊ธฐ๋ํ์ง๋ ์์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
๋ค์์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ์ ์๋ ์คํ์ ์ฌ์ฉํด ๋ณด์๋ค.
stack์ ๋ฌธ์๋ฅผ ํ๋์ฉ ๋ฃ์ผ๋ฉด์ ํญ๋ฐ์์ผ์ผ ํ ๋ฌธ์์ด์ด ์์ผ๋ฉด stack์์ ๊ทธ ๊ฐ์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํด ๋ณด์๋ค.
val stack = Stack<String>()
for (i in string.indices) {
stack.add(string[i])
if (string[i] == boomString.last().toString() && stack.size >= boomString.length) {
var subRes = ""
for (j in stack.lastIndex downTo stack.lastIndex - boomString.lastIndex) {
subRes += stack[j]
}
if (subRes == boomString.reversed()) {
for (j in boomString.indices) stack.pop()
}
}
}
์ด ์ฝ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋์ ์์ stack ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ๋ ๊ฐ๋ฅํ stringBuilder๋ก ๊ตฌํ์ ์๋ํ๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val string = readLine()
val boomString = readLine()
val sb = StringBuilder()
var subRes: String
for (i in string.indices) {
sb.append(string[i])
if (string[i] == boomString.last() && sb.length >= boomString.length) {
subRes = sb.substring(sb.lastIndex - boomString.lastIndex, sb.length)
if (subRes == boomString) {
sb.delete(sb.lastIndex - boomString.lastIndex, sb.length)
}
}
}
if (sb.isEmpty()) println("FRULA")
else println(sb)
}
๋ฌธ์ ํ์ด
์ฐ์ ๊ณ์ stringBuilder์ ๋ฌธ์๋ฅผ ์ง์ด๋ฃ๋๋ค.
ํ์ฌ stringBuilder์ ๊ธธ์ด๊ฐ ํญ๋ฐ ๋ฌธ์์ด๋ณด๋ค ๊ธธ๊ฑฐ๋ ๊ฐ์ผ๋ฉด์ ์ง์ด๋ฃ๋ ๋ฌธ์์ด์ด ํญ๋ฐ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋ฌธ์์ ๊ฐ์ผ๋ฉด ํญ๋ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ์์ ๋ฌธ์๋ค์ ํ์ธํ๋ค.
ํ์ธํ ๋ฌธ์๊ฐ ํญ๋ฐ ๋ฌธ์์ด๊ณผ ๋์ผํ๋ฉด ๊ทธ ๋ฌธ์๋ค์ ์ง์์ค๋ค.
๊ทธ๋ฌ๋ฉด ์์ ๊ฐ์ ์ ๋ ฅ์ด ์ฃผ์ด์ก์ ๋,
aaaaabbbbb
ab
sb์๋ a๊ฐ ๋ค ๋ค์ด๊ฐ๊ณ b๊ฐ ๋ค์ด์ฌ ์ฐจ๋ก๊ฐ ๋๋ค๋ฉด ํญ๋ฐ ๋ฌธ์์ด์ธ ab์ ๋์ผํ ๊ฐ๋ค์ ์ญ์ ํด ๋๊ฐ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ ๋ต์ ๋น ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ FURLA๊ฐ ์ถ๋ ฅ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
2๊ฐ์ง์ ๋ฐฉ๋ฒ์ ์๋ํ๋ค.
replace๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ด์ ๊ธฐ๋๋ ์ ํ๋ค. ๊ณจ๋ ๋ฌธ์ ์ธ๋ฐ ์ด๋ฆฌ ์ฝ๊ฒ ํ๋ฆด ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ญ์๋ 40%๋์์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์๋ค.
stack์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์์ด์ด ๊ธธ์ด์ง๋ฉด ์ก์๋จน๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ปค์ ธ์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋จ๋ ๋ฏํ๋ค. ์ต์ ํ๋ฅผ ํ๋ค๋ฉด ํ ์ ์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
๋ด ๊ธฐ์ค์ ์ฒด๊ฐ ๋์ด๋๋ ์ค๋ฒ 2~์ค๋ฒ 1์ธ ๋ฏํ๋ค.
๊ตฌํ์ ํฌ๊ฒ ์ด๋ ค์์ ๋๋ผ์ง ์์๋ค.
stack ๋์ ์ stringBuilder๋ฅผ ์ฐ๋ ๊ฒ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํธํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ผ๋ ์ข๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, G5] ๋ฐฑ์ค 1711๋ฒ ์ง๊ฐ์ผ๊ฐํ (0) | 2024.10.01 |
---|---|
[Kotlin, G5] ๋ฐฑ์ค 10827๋ฒ a^b (0) | 2024.09.19 |
[Kotlin, G1] ๋ฐฑ์ค 1300๋ฒ K๋ฒ์งธ ์ (0) | 2024.09.09 |
[Kotlin, G5] ๋ฐฑ์ค 16928๋ฒ ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2024.08.12 |
[Kotlin, G5] ๋ฐฑ์ค 1013๋ฒ Contact (0) | 2024.08.07 |