백준 문제풀이

10799. 쇠막대기 (자바, Java)

뮤츠 2022. 11. 20. 02:04

처음에 엄청 어렵게 느껴졌는데, 막상 풀때는 생각보다 풀만했다.

각 예제에 있는걸 그림을 그려서 이해했다. 그리고 각 입력값별로 끊어보면서 카운팅을 직접 했다.

선입선출의 큐를 이용해서 풀었다. 레이저에 해당하는 ()는 임의의 다른 문자로 변환하여 (, ), 레이저(풀이 코드상에선 /) 3가지 경우로 나누었고, 각 경우마다 어떤게 나오냐에 따라 조각 수를 계산하여 풀었다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine().replace("()", "/");
		Queue<Character> queue = new LinkedList<>();
		int count = 0;
		int ans = 0;
		
		for (int i=0; i<str.length(); i++) {
			char c = str.charAt(i);
			if (c=='(') {
				queue.offer('(');
			} else if (c==')') {
				queue.poll();
				ans++;
			} else if (c=='/') {
				ans+=queue.size();				
			}
		}		
		System.out.println(ans);
	}
}

'백준 문제풀이' 카테고리의 다른 글

17299. 오등큰수 (자바, Java)  (0) 2022.11.20
17298. 오큰수 (자바, Java)  (0) 2022.11.20
17413. 단어 뒤집기 2 (자바, Java)  (0) 2022.11.20
10866. 덱 (자바, Java)  (0) 2022.11.05
1158. 요세푸스 문제 (자바, Java)  (0) 2022.11.05