Development Logs/Algorithms
[JAVA] 프로그래머스 : 쇠막대기 (코딩테스트 고득점 kit > 스택/큐)
유뱅유뱅뱅
2020. 7. 14. 20:06
반응형
https://programmers.co.kr/learn/courses/30/lessons/42585
코딩테스트 연습 - 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레�
programmers.co.kr
스택을 이용하여 구현하였음
쇠막대기가 잘라지는 규칙을 찾아내면 쉽게 구현할 수 있는 문제임
먼저 () 나오는 부분은 레이저 이므로 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;
}
}
반응형