10799. 쇠막대기
https://www.acmicpc.net/problem/10799
📌문제
- 예제1
📝입력
()(((()())(())()))(())
💻출력
17
📌풀이
180ms 16472kb
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int answer = 0;
char beforeChar = ' ';
Stack<Character> stack = new Stack<>();
for(char c : str.toCharArray()){
if(c == ')'){
// 막대기 끝나는 구간
if(!stack.isEmpty() && beforeChar == ')'){
answer++;
stack.pop();
} // 막대기 잘라내는 구간
else{
stack.pop();
answer += stack.size();
}
}// 막대기 시작
else stack.push(c);
beforeChar = c;
}
System.out.print(answer);
}
}
풀이법은 어렵지 않다. 이전문자를 저장후, "()" 쇠막대기를 자르는 괄호 표시가 이어졌다면 stack.size를 결과값에 더하고 "))" 닫는 괄호가 연달아 나타났다면 막대기가 끝나는 지점이기 때문에 다는 괄호 수만큼 1씩 더해주면 된다. 막대기가 시작하는 부분인 여는 괄호가 있다면 stack에 그대로 넣어주면 된다.
'Algorithm > PTUStudy' 카테고리의 다른 글
11주차. 오등큰수 (0) | 2023.04.06 |
---|---|
10주차. 오큰수 (0) | 2023.03.30 |
10주차. 데크, 우선순위(k개 정렬 리스트 병합) (0) | 2023.03.30 |
10주차. 데크, 우선순위 큐(원형 데크 디자인) (0) | 2023.03.30 |
9주차. 스택, 큐(원형 큐 디자인) (0) | 2023.03.30 |