Algorithm/프로그래머스 알고리즘
[프로그래머스] 쇠막대
p8labs
2021. 8. 10. 13:10
728x90
반응형
문제
분석
1. 처음에 어떻게 풀어야 할까 하다가 몇번 실패 후 다시 풀어 봤다.
2. 스택문제여서 스택을 이용하자
3. () 는 컷을 하는 기준이 이기 때문에 () = C 로 치환했다.
4. "(" 일 경우 stack push를 해주었다.
5. C 일경우 stack 의 사이즈를 더해준다.
- 이유는 ( ( C 일경우는 막대가 2개 들어 왔다 C 로 막대를 자르면 자른 지점 까지 기준으로 2개가 된다.
6 ")" 닫힌 부분이 나오면 +1 을 해준다. 막대의 끝이기 때문에 다음과 같은 공식이 나온다
- 잘라진 부분 + 나머지 부분
구현
import java.util.*;
public class Main {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
String str = input.next();
str = str.replace("()","C");
Stack<Character> stack = new Stack<>();
int count = 0;
for(int i = 0; i < str.length(); i++) {
if (Character.compare(str.charAt(i), '(') == 0) {
stack.push(str.charAt(i));
} else if (Character.compare(str.charAt(i), ')') == 0) {
stack.pop();
count++;
} else {
count += stack.size();
}
}
System.out.println(count);
}
}
728x90
반응형