Notice
Recent Posts
Link
- Today
- Total
hye-log
[SWEA]5432번 쇠막대기 자르기(JAVA) 본문
0. 문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl47b6DGMDFAXm#none
1. 문제 설명
1) () 이 오면 레이저로 막대기를 자름
2) ( 이 오면 막대기의 시작 부분
3) ) 이 오면 막대기의 끝 부분
2. 입출력
// input
2
()(((()())(())()))(())
(((()(()()))(())()))(()())
// output
#1 17
#2 24
3. 코드
import java.util.*;
public class swea5432 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int t = 1; t <= T; t++) {
int ans = 0; // 자른 개수
int stick = 0; // 막대기 개수
String s = sc.next();
for(int i = 0; i < s.length()-1; i++) { // 2개씩 살펴봄
if(s.charAt(i) == '(' && s.charAt(i+1) == ')') { // 레이저
ans += stick; // 막대기 잘림
i++; // 레이저는 다음을 보지 않아도 됨
} else if(s.charAt(i) == '(') { // 막대기 시작
stick++; // 막대기 추가
} else { // 막대기 끝
stick--; // 막대기 하나 감소
ans++; // 끝났으니 추가
}
}
ans++; // 마지막 막대기 추가
System.out.printf("#%d %d\n", t, ans);
}
}
}
실행 결과
4. 회고
1) ( 괄호가 나온 다음에 바로 ) 가 나오는지 ( 가 나오는지에 따라 레이저인지 막대기인지 결정되므로 연속된 두 문자씩 고려
5. Github
https://github.com/iihye/Algorithm/blob/main/SWEA/swea5432.java
728x90
'CodingTest > SWEA' 카테고리의 다른 글
[SWEA]1873번 상호의 배틀필드(JAVA) (0) | 2023.07.30 |
---|---|
[SWEA]1289번 원재의 메모리 복구하기(JAVA) (0) | 2023.07.30 |
[SWEA]1940번 가랏! RC카!(JAVA) (0) | 2023.07.30 |
[SWEA]1974번 스도쿠 검증(JAVA) (0) | 2023.07.30 |
[SWEA]1208번 Flatten(JAVA) (0) | 2023.07.30 |
Comments