728x90
문제
풀이
/*
* 1. 첫번째 줄 T 테스트케이스
* 2. 공백없이 괄호
* 3. 괄호 두개째부터 막대 하나씩 생김
* 4. 출력 "#" + tc + " " + result
*
* >> stack을 사용
* >> (면 쌓기 )면 삭제
* >> stack을 쌓은 다음 ()가 나오면 스택의 크기만큼 쇠막대기 생김 or ))가 나오면 +1개만큼 쇠막대기 생김
*/
코드
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class D4_5432_쇠막대기자르기 {
public static void main(String[] args) throws NumberFormatException, IOException {
File file = new File("D4_5432_쇠막대기자르기.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
Stack<Character> stack = new Stack<>();
for(int tc = 1; tc <= T; tc++) {
int result = 0;
String s = br.readLine();
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch(c) {
case '(': // (일 때는 쌓기
stack.push(c);
break;
case ')': // )일 때
if(s.charAt(i-1)=='(') {stack.pop(); result += stack.size();} //()모양일 때는 레이저 >> size만큼 더하기
else {stack.pop(); result++;} // 레이저가 아닐 때는 1만 더하기
break;
}
}
System.out.println("#" + tc + " " + result);
}
}
}
결과
#자바 #java #swea #알고리즘
728x90
'알고리즘 > SWEA' 카테고리의 다른 글
[java][swea][d4] 7465. 창용 마을 무리의 개수 (0) | 2022.02.22 |
---|---|
[java][swea][d3] 6808. 규영이와 인영이의 카드게임 (0) | 2022.02.14 |
[java][swea][d4] 1233. 사칙연산 유효성 검사 (0) | 2022.02.10 |
[java][swea][d4] 1224. 계산기3 (0) | 2022.02.09 |
[java][swea][d4] 1223. 계산기2 (0) | 2022.02.09 |