코딩테스트
[Programmers/JAVA] 표 편집
Eun
2022. 4. 21. 21:34
import java.util.*;
class Solution {
public String solution(int n, int k, String[] cmd) {
String answer = "";
Stack<Integer> remove = new Stack<Integer>();
int index = n;
// k는 지금 가리키고 있는 인덱스
// 인덱스는 행 길이
for(int i=0;i<cmd.length;i++) {
char c = cmd[i].charAt(0);
if(c=='D') {
//X칸 아래 이동
k+=Integer.parseInt(cmd[i].substring(2));
}else if(c=='U') {
//X칸 위로 이동
k-=Integer.parseInt(cmd[i].substring(2));
}else if(c=='C') {
// 삭제
remove.add(k);
index--;
if(k==index) {
// 마지막 차례라면
k--;
}
}
else if(c=='Z') {
//최근에 삭제한 것 복구
if(remove.pop()<=k) {
// 지금 가리키고 있는 것보다 작으면 가리키고 있는것 +1
k++;
}
// k보다 크면 인덱스 추가
index++;
}
}
StringBuilder builder = new StringBuilder();
for(int i=0;i<index;i++) {
builder.append("O");
}
while(!remove.isEmpty()) {
// 스택에 있다는 것은 삭제됐다는 뜻
builder.insert(remove.pop().intValue(), "X");
}
answer = builder.toString();
return answer;
}
}