이 문제는 해결 방법을 생각해내기가 정말 쉽지 않았다.
내가 계속 전체 막대기를 한 번에 계산하려해서 더더욱 해결 방법을 찾지 못한 것 같다.
중요 포인트는 ()
를 만나기 전까지 (
를 스택에 담고, ()
를 만나면 여태까지의 스택 사이즈를 더해준다.
만약 레이저를 만난 후 ())
)
가 하나 더 나왔다면 막대기 한 개가 전부 잘렸기 때문에 끝부분 +1을 해준다.
public int solution(String arrangement) {
int answer = 0;
String bar[] = arrangement.split("");
Stack<String> stack = new Stack<>();
for(int i=0; i<bar.length; i++){
if("(".equals(bar[i])){
stack.add(bar[i]);
}else{
stack.pop();
if("(".equals(bar[i-1])){
answer = answer + stack.size();
}else{
answer++;
}
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 주식가격 (level 2) (0) | 2020.01.11 |
---|---|
[프로그래머스] 체육복 (level 1) - 그리디 알고리즘(탐욕법) (0) | 2020.01.09 |
[프로그래머스] 베스트앨범 (level3) java (0) | 2019.12.17 |
[프로그래머스] 프린터 (level 2) java (0) | 2019.05.13 |
[프로그래머스] 스킬트리 (level 2) (0) | 2019.04.01 |
댓글