[백준] 10799 쇠막대기 - Java
문제 이해가 정말정말 중요하다.
종이에 몇 번 써 보고 직접 세 보는 등 문제를 먼저 이해하자.
1. ( ) 가 연속으로 나오면 레이저를 쏜다.
2. ) 전에 ( 가 나오지 않았으면 막대기를 완성한다.
이제 어떻게 셀 지 생각해 봐야 한다.
레이저를 한 번 쏠때 막대가 몇 개 생기는지에 대해 생각해 봤다.
( 로 막대 계층이 높아지면 그 층 수 만큼 막대가 생긴다.
이 문제도 스택으로 분류된 문제니 스택으로 코드를 짜 보자.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Stack<Character> st = new Stack();
int count = 0;
int sum = 0;
int stick = 0;
for(int i=0; i<str.length(); i++) {
if(str.charAt(i)=='(') {
st.push('(');
count++;
}else if(str.charAt(i)==')') {
count--;
if(st.peek()=='(') {
sum = sum + count;
st.push(')');
}else {
st.push(')');
stick++;
}
}
}
System.out.print(sum+stick);
}
}
'(' 가 입력되면 스택에 '('를 넣고 ')' 가 입력되면 스택에 ')' 를 넣는다.
위에서 말한 방법대로 개수를 센 다음, 마지막에 만들어진 막대의 수를 더해주면 답이 된다.
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1100 하얀 칸 - Java (0) | 2021.10.29 |
---|---|
[백준] 1874 스택 수열 - Java (0) | 2021.10.29 |
[백준] 1935 후위 표기식2 - Java (0) | 2021.10.29 |
[백준] 1918 후위 표기식 - Java (0) | 2021.10.29 |
[백준] 9012 괄호 - Java (0) | 2021.10.29 |
댓글
이 글 공유하기
다른 글
-
[백준] 1874 스택 수열 - Java
[백준] 1874 스택 수열 - Java
2021.10.29 -
[백준] 1935 후위 표기식2 - Java
[백준] 1935 후위 표기식2 - Java
2021.10.29 -
[백준] 1918 후위 표기식 - Java
[백준] 1918 후위 표기식 - Java
2021.10.29 -
[백준] 9012 괄호 - Java
[백준] 9012 괄호 - Java
2021.10.29