hye-log

[SWEA]5432번 쇠막대기 자르기(JAVA) 본문

CodingTest/SWEA

[SWEA]5432번 쇠막대기 자르기(JAVA)

iihye_ 2023. 7. 30. 01:39

0. 문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl47b6DGMDFAXm#none 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

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
Comments