https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
해석 및 팁
이 문제는 Stack을 활용하는 문제입니다. 먼저 ' ( '을 만나면 stack에 저장합니다. 그다음 ' ) '을 만났을 때 앞의 것이 ' ) '이면 자투리 막대기이므로 count++을 해줍니다. ' ( '인경우에는 레이저 이므로 스택의 내용을 count에 더해줍니다.
Java 코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Character> stack = new Stack<>();
int count = 0;
String str = sc.next();
for(int i = 0; i < str.length() ; i++) {
if(str.charAt(i) == '(') stack.push('(');
else {
if(str.charAt(i - 1) == ')') {
stack.pop();
count++;
}
else {
stack.pop();
count += stack.size();
}
}
}
System.out.println(count);
}
}
'백준' 카테고리의 다른 글
백준 6603 로또(Java) (0) | 2023.02.07 |
---|---|
백준 1182 부분수열의 합(Java) (0) | 2023.02.07 |
백준 4963 섬의 개수(Java) (0) | 2023.02.07 |
백준 11279 최대 힙(Java) (0) | 2023.02.07 |
백준 14889 스타트와 링크(Java) (0) | 2023.02.07 |