dev/algorithm
BOJ / 10799๋ฒ / ์ ๋ง๋๊ธฐ [Go][Python3]
crscnt
2021. 2. 6. 21:00
๐ฉ๐ป๐ป ๋ฌธ์
10799๋ฒ: ์ ๋ง๋๊ธฐ
์ฌ๋ฌ ๊ฐ์ ์ ๋ง๋๊ธฐ๋ฅผ ๋ ์ด์ ๋ก ์ ๋จํ๋ ค๊ณ ํ๋ค. ํจ์จ์ ์ธ ์์ ์ ์ํด์ ์ ๋ง๋๊ธฐ๋ฅผ ์๋์์ ์๋ก ๊ฒน์ณ ๋๊ณ , ๋ ์ด์ ๋ฅผ ์์์ ์์ง์ผ๋ก ๋ฐ์ฌํ์ฌ ์ ๋ง๋๊ธฐ๋ค์ ์๋ฅธ๋ค. ์ ๋ง๋๊ธฐ์ ๋ ์ด์
www.acmicpc.net
โ๐ป ํ์ด
๐จ Go
// https://www.acmicpc.net/problem/10799
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var input string
fmt.Fscanln(reader, &input)
inputs := strings.Split(input, "")
fmt.Fprintln(writer, getBarCount(inputs))
}
func getBarCount(inputs []string) int {
var stack []string
var prev string
var barCount int
for i := 0; i < len(inputs); i++ {
cur := inputs[i]
if cur == "(" {
stack = append(stack, cur)
} else if cur == ")" {
stack = stack[0 : len(stack)-1]
if prev == "(" { // "(" ๋ค์ ")"๊ฐ ๋ฐ๋ก ๋ค์ด์ค๋ฉด ๋ ์ด์
barCount += len(stack) // ๋ ์ด์ ์ธ ๊ฒฝ์ฐ ์คํ ์์ ๊ดํธ ๊ฐฏ์๋งํผ ๋ง๋ ์นด์ดํธ.
} else {
barCount++ // ")" ๋ค์ ")"๊ฐ ๋ค์ด์จ ๊ฒฝ์ฐ ๋ง๋๊ธฐ ๋์ ๊ฐ์ ํ๋ ์นด์ดํธ.
}
}
prev = cur
}
return barCount
}
๐จ Python3
# https://www.acmicpc.net/problem/10799
import sys
def get_bar_count(inputs):
stack = []
prev = ""
bar_count = 0
for i in range(len(inputs)):
cur = inputs[i]
if cur == "(":
stack.append(cur)
elif cur == ")":
stack.pop()
if prev == "(":
bar_count += len(stack)
else:
bar_count += 1
prev = cur
return bar_count
if __name__ == "__main__":
inputs = list(sys.stdin.readline().rstrip())
print(get_bar_count(inputs))
728x90