[프로그래머스]표 편집

[프로그래머스]표 편집

import java.util.Stack;

public class EditTable {

public String solution( int n, int k, String [] cmd) {

//삭제 된 값을 순서대로 저장할 스택

Stack < Integer > remove_val = new Stack < > ();

int table_size = n;

for ( int i = 0 ; i < cmd. length ; i + + ){

char c = cmd[i]. charAt ( 0 );

//D면 정수형으로 변환해서 +

if (c = = 'D' ){

k + = Integer. parseInt (cmd[i]. substring ( 2 ));

}

//U면 정수형으로 변환해서 -

else if (c = = 'U' ){

k - = Integer. parseInt (cmd[i]. substring ( 2 ));

}

//C면 정수형으로 변환해서 삭제스택에다가 현재 포커스값을 넣는다.그다음 테이블 사이즈 줄여줌

else if (c = = 'C' ){

remove_val. add (k);

table_size - - ;

//만약 k값이 마지막위치에 있다면 k값을 빼준다.

if (k = = table_size){

k - - ;

}

//Z이면 스택에서 값을 빼낸다 만약 K값이 스택에서 나온값과 같다면 k++

} else if (c = = 'Z' ){

if (remove_val.pop() < = k){

k + + ;

}

//표 사이즈 늘려줌

table_size + + ;

}

}

StringBuilder sb = new StringBuilder();

//현재 표 크기만큼 0을 채워넣는다.

for ( int i = 0 ; i < table_size; i + + ){

sb.append( "O" );

}

//스택에 k값을 넣었기때문에 insert로 k를 빼내서 k번째 자리에 X를 채워준다.

while ( ! remove_val.isEmpty()){

sb.insert(remove_val.pop(), "X" );

}

String answer = sb. toString ();

return answer;

}

}

from http://jarvics.tistory.com/63 by ccl(A) rewrite - 2021-10-21 20:27:59