BOJ 10799 쇠막대기
- 문제 링크
https://www.acmicpc.net/problem/10799
- 문제 해설
'('가 입력으로 들어오면 쇠막대기나 레이저가 하나 추가된다는 의미이므로 스택에 '('를 쌓는다.
')'가 입력으로 들어오는 경우가 중요하다.
')'가 입력으로 왔을 경우는 2가지로 나눌 수 있다. 레이저이거나, 쇠막대기의 끝 점이다.
레이저인 경우 스택에 쌓인 쇠막대기의 수만큼 조각이 생긴다.
쇠막대기의 끝 점인 경우 조각이 1개가 추가된다.
cnt는 조각의 수이고, 레이저를 판별하기 위해 입력을 배열에 담았다.
- 코드 보기
import java.io.*;
import java.util.Stack;
public class Main
{
static int cnt;
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Character> s = new Stack<>();
String str = br.readLine();
char[] c = new char[str.length()];
for (int i = 0; i < str.length(); i++)
{
c[i] = str.charAt(i);
if (c[i] == '(')
s.push('(');
else if (c[i] == ')')
{
if (!s.empty())
{
if (c[i - 1] == '(')
{
s.pop();
cnt += s.size();
}
else
{
s.pop();
cnt++;
}
}
}
}
bw.write(Integer.toString(cnt));
br.close();
bw.flush();
bw.close();
}
}
'PS > BOJ' 카테고리의 다른 글
BOJ 10866 덱 [Java] (0) | 2021.07.20 |
---|---|
BOJ 10845 큐 [Java] (0) | 2021.07.18 |
BOJ 9012 괄호 [Java] (0) | 2021.07.18 |
BOJ 10828 스택 [Java] (0) | 2021.07.18 |
BOJ 11004 K번째 수 [Java] (0) | 2021.07.17 |