https://programmers.co.kr/learn/courses/30/lessons/42585
스택을 이용하여 구현하였음
쇠막대기가 잘라지는 규칙을 찾아내면 쉽게 구현할 수 있는 문제임
먼저 () 나오는 부분은 레이저 이므로 l로 바꿔서 처리하였음
그리고 스택에 넣으면서
1. (가 나오면 push 해주고
2. l이 나오면 레이저가 지금까지 쌓인 ( 갯수 만큼 쇠막대기를 자름
3. )이 나오면 pop을 해주고 쇠막대기 끝 부분이므로 answer ++ 해줌
import java.util.*;
// 쇠막대기
// 쇠막대기 잘라지는 규칙을 찾아내는게 중요
class Solution {
public int solution(String arrangement) {
int answer = 0;
// () 찾아서 ㅣ로 바꿔주기
arrangement = arrangement.replace("()", "l");
Stack<Character> stack = new Stack<>();
for(int i=0; i<arrangement.length(); i++){
// ( 가 나오면 push
if(arrangement.charAt(i)=='('){
stack.push(arrangement.charAt(i));
}
// l 가 나오면 laser인데 stack size 만큼 잘라짐
else if(arrangement.charAt(i)=='l'){
answer += stack.size();
}
// ) 가 나오면 pop인데 1개 잘라짐
else{
answer++;
stack.pop();
}
}
return answer;
}
}
'Development Logs > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 베스트앨범 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.14 |
---|---|
[JAVA] 프로그래머스 : 기능개발 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 주식가격 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 프린터 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 다리를 지나는 트럭 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.13 |