문제
https://school.programmers.co.kr/learn/courses/30/lessons/81303
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
표를 의미하는 PriorityQueue와 삭제한 행을 담기 위한 stack을 만들고 cmd를 바탕으로 반복문을 실행하면 되지 않을까 생각했지만, 그러면 시간 초과가 생길 거 같아서 다른 방법을 생각했다.
현재 위치, 표의 사이즈 그리고 StringBuilder를 활용해서 쉽게 해결할 수 있었다.
import java.util.*;
class Solution {
public String solution(int n, int k, String[] cmd) {
String answer = "";
//삭제된 행의 인덱스를 추적하기 위한 stack
Stack<Integer> stack = new Stack<>();
//현재 표의 크기
int size = n;
현재 선택된 행의 인덱스
int cur = k;
for(String s : cmd) {
String[] arr = s.split(" ");
switch(arr[0]) {
case "U":
cur -= Integer.valueOf(arr[1]);
break;
case "D":
cur += Integer.valueOf(arr[1]);
break;
case "C":
stack.add(cur);
size--;
if(size == cur) cur--;
break;
case "Z":
int x = stack.pop();
if(x <= cur) {
cur++;
}
size++;
break;
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<size; i++) sb.append("O");
while(!stack.isEmpty()) {
sb.insert(stack.pop(), "X");
}
answer = sb.toString();
return answer;
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보행자 천국 - Java (2) | 2024.09.01 |
---|---|
[프로그래머스] 풍선 터트리기 - Java (0) | 2024.09.01 |
[프로그래머스] 코딩 테스트 공부 - Java (0) | 2024.08.31 |
[프로그래머스] 아이템 줍기 - Java (0) | 2024.08.31 |
[프로그래머스] 선입 선출 스케줄링 - Java (0) | 2024.08.30 |