728x90
문제
프로그래머스 참조
문제의 그림에 스택을 쓰라고 나와인는 듯 하다.
처음에 조금 까다로웠던 건 2차원 int[][] 배열에서 moves 에 있는 해당 줄의 인형을 뽑는 부분 이였다.
loop를 돌아가며 몇번 출력을 해보고 어떻게 배열의 index 를 잡을지 감이왔다.
(컴퓨팅 사고가 부족하다)
그것만 처리하면 stack에서 같은 인형이 있으면 score 올리는건 쉽다.
코드가 긴게 함정이다.
import java.util.*;
class Solution {
int[][] array;
Stack<Integer> stack = new Stack();
int answer = 0;
public int solution(int[][] board, int[] moves) {
array = board;
// printArray();
for(int move : moves){
pick(move);
checkScore();
}
// System.out.println("");
// printArray();
// printStack();
return answer;
}
public void checkScore(){
if(stack.size() > 1){
int pop = stack.pop();
int peek = stack.peek();
if (peek == pop){
answer = answer + 2;
stack.pop();
}else{
stack.push(pop);
}
}
}
public void pick(int col){
// col 이 1 이면
loop:
for(int i = 0 ; i < array.length ; i++){
int[] row = array[i];
for(int j = 0 ; j < row.length ; j++){
int item = row[j];
if(j == col-1){
if(item != 0){
array[i][j] = 0;
stack.push(item);
// printArray();
break loop;
}
}// end of if
}// end of j loop
}//end of i loop
}
public void printArray(){
for(int[] row : array){
System.out.println("");
for(int item : row){
System.out.print(item);
}
}
System.out.println("");
}
public void printStack(){
System.out.println(Arrays.toString(stack.toArray()));
}
}
728x90
'Algorithm > Programmers' 카테고리의 다른 글
Programmers - 프린터 (0) | 2020.05.15 |
---|---|
Programmers - [1차] 프렌즈4블록 (0) | 2020.05.08 |
Programmers - 문자열 압축 (0) | 2020.05.08 |
Programmers - 체육복 (0) | 2020.04.11 |
Programmers - 이분탐색.예산 (0) | 2020.04.07 |
댓글