-
PROGRAMMERES Level 1 2019 카카오 개발자 겨울 인턴십 JAVAPROGRAMMERS/KAKAO 2022. 7. 21. 17:42
import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; int count =0; boolean flag[][] = new boolean[board.length][board[0].length]; for(int i=0; i<board.length; i++){ for(int j=0; j<board.length; j++){ flag[i][j] = false; } } //바구니 ArrayList<Integer> basket = new ArrayList<>(); for(int i=0; i<moves.length; i++) { for(int j=0; j<board.length; j++){ if(board[j][moves[i]-1]>0 && flag[j][moves[i]-1] == false) { basket.add(board[j][moves[i]-1]); count += 1; flag[j][moves[i]-1] = true; break; } } if (count > 1) { if(basket.get(count-1) == basket.get(count-2)){ basket.remove(count-1); basket.remove(count-2); answer += 2; count -= 2; } } } return answer; } }
개선시킨 코드
ArrayList + count -> Stack 사용
for -> for each 사용
flag -> 사용한 board를 0으로 초기화
import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; //바구니 Stack<Integer> basket = new Stack<>(); for(int move : moves) { for(int j=0; j<board.length; j++){ // 인형의 이름은 1이상 if(board[j][move-1]>0) { //바구니가 비어있지않고 바구니안에있던 번호(이름)과 현재뽑은 번호(이름)이 같을경우 //전에 바구니에 있던 번호를 없애고 answer(사라진 인형) 갯수를 +2 if(!basket.isEmpty() && basket.peek() == board[j][move-1]){ basket.pop(); answer += 2; //같지 않을 경우 바구니에 번호(이름) 추가 } else { basket.push(board[j][move-1]); } // 사용했기 떄문에 사용한 곳은 0으로 초기화시키고 다음 반복에서 안걸리게 만듬 board[j][move-1] = 0; break; } } } return answer; } }
Stack<Integer> stack = new Stack<>();
LIFO(Last In First Out) - 나중에 들어온 것이 먼저 나가는 형태의 자료구조
.pop() - 삭제
.push() - 추가
.clear() - 초기화
.peek() - 가장 최근 값 조회
'PROGRAMMERS > KAKAO' 카테고리의 다른 글
PROGRAMMERES Level 1 2018 KAKAO BLIND RECRUITMENT [1차] 비밀지도 (JAVA 자바) (0) 2022.08.20 PROGRAMMERES Level 1 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기 (JAVA 자바) (0) 2022.08.19 PROGRAMMERES Level 1 2020 카카오 인턴십 키패드 누르기 JAVA (0) 2022.07.21 PROGRAMMERES Level 1 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 JAVA (0) 2022.07.21 PROGRAMMERES Level 1 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 JAVA (0) 2022.07.21