My Space

반응형

코드
public int solution(int[][] board, int[] moves) {		
	// 1. 바구니에 담겨질 리스트 선언
	// 2. 뽑기의 해당 값이 0일 경우 0이 아닌 다음 행의 숫자를 뽑는다.
	// 3. 새로운 숫자가 뽑혔을때 바구니의 마지막 숫자와 같으면 소멸 된다.		
	// 바구니 리스트 선언
	ArrayList<Integer> list = new ArrayList<Integer>();		
	int cnt = 0;		
	// 기준은 moves
	for(int i=0; i<moves.length; i++) {			
		for(int col=0; col<board.length; col++) {	// 행
               // 해당 뽑기 값이 0이 아닐경우 바구니에 저장
			if(board[col][moves[i]-1] != 0 ) {		
	    	// 바구니에 값이 없거나 뽑은 값과 바구니의 마지막 값이 다를 경우 바구니에 저장
				if(list.size() == 0 || list.get(list.size()-1) != board[col][moves[i]-1] ) {
					list.add(board[col][moves[i]-1]);
					board[col][moves[i]-1] = 0;
					break;
				} else if(list.get(list.size()-1) == board[col][moves[i]-1]) {
					list.remove(list.size()-1);
					board[col][moves[i]-1] = 0;
					cnt++;
					break;
				}
			}				
		}
	}
	return cnt*2; 
}	
	public static void main(String[] args) {
	Solutaion3 sol = new Solutaion3();		
	int[][] board = {{0,0,0,0,0},{0,0,1,0,3},{0,2,5,0,1},{4,2,4,4,2},{3,5,1,3,1}};
	int[] moves = {1,5,3,5,1,2,1,4};						
	System.out.println(sol.solution(board, moves));
 }
설명

값은 moves의 요소에 따라 쌓이므로 첫번째 for문을 moves기준으로 돌리고,

해당 열의 값이 0일 경우 다음 행으로 증가 시켜야 함으로 col기준으로 for문을 돌린다.

조건1) list에 값이 없거나, 마지막에 들어있는 list의 값이 뽑히는 값과 다를 경우 

         list에 추가를 하고 해당 배열의 값은 0으로 변경한다.

조건2) 마지막에 들어있는 list의 값이 뽑히는 값과 같을 경우

         list에 있는 같은 값을 지우고 해당 배열의 값은 0으로 변경한다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading