표 편집
// 노드 정의 풀이
import java.util.*;
class Solution {
private static class Node {
int index;
Node prev, next;
Node(int index) {
this.index = index;
}
}
public String solution(int n, int k, String[] cmd) {
Node[] nodes = new Node[n];
for (int i = 0; i < n; i++)
nodes[i] = new Node(i);
// 연결 설정
for (int i = 1; i < n; i++) {
nodes[i].prev = nodes[i -1];
nodes[i - 1].next = nodes[i];
}
Node current = nodes[k];
Stack<Node> stack = new Stack<>();
for (String c : cmd) {
char ch = c.charAt(0);
if (ch == 'U') {
int x = Integer.parseInt(c.substring(2));
for (int i = 0; i < x; i++) current = current.prev;
} else if (ch == 'D') {
int x = Integer.parseInt(c.substring(2));
for (int i = 0; i < x; i++) current = current.next;
} else if (ch == 'C') {
stack.push(current);
if (current.prev != null) current.prev.next = current.next;
if (current.next != null) current.next.prev = current.prev;
current = (current.next != null) ? current.next : current.prev;
} else if (ch == 'Z') {
Node node = stack.pop();
if (node.prev != null) node.prev.next = node;
if (node.next != null) node.next.prev = node;
}
}
// 삭제 정보 생성
char[] result = new char[n];
Arrays.fill(result, 'O');
for (Node node : stack) {
result[node.index] = 'X';
}
return new String(result);
}
}Last updated