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
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 피보나치 (0) | 2021.08.10 |
---|---|
[프로그래머스] JadenCase 문자열 만들기 (0) | 2021.08.10 |
[프로그래머스] 전화번호 목록 (0) | 2021.08.09 |
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2021.08.04 |
[프로그래머스] 입국심사 (0) | 2021.07.28 |
댓글