-
2018 KAKAO BLIND RECRUITMENT) [1차] 프렌즈4블록 - Javascript 풀이Algorithm/프로그래머스 2022. 8. 1. 16:13
https://school.programmers.co.kr/learn/courses/30/lessons/17679?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명이 워낙 친절하게 되어있어서 알고리즘을 구현하는데에는 크게 어려움이 없었던 문제였습니다.
재귀함수를 이용하여 매번 업데이트 되는 board 배열을 인자로 받았습니다.
function solution(m, n, board) { // m: 높이 n: 폭 board = board.map((v) => v.split("")); let answer = 0; let flag = 1; function fn(board_) { if (flag === 0) { return answer; } else { flag = 0; const check = Array.from({ length: m }, (v) => Array.from({ length: n }, (v) => 0) ); for (let i = 0; i < m - 1; i++) { for (let j = 0; j < n - 1; j++) { if (board_[i][j] !== 0) { if ( board_[i][j] === board_[i][j + 1] && board_[i][j] === board_[i + 1][j] && board_[i][j] === board_[i + 1][j + 1] ) { check[i][j] = 1; check[i][j + 1] = 1; check[i + 1][j] = 1; check[i + 1][j + 1] = 1; } } } } for (let i = 0; i < n; i++) { const stack = []; for (let j = m - 1; j >= 0; j--) { if (check[j][i] === 0) stack.push(board_[j][i]); else { answer++; flag = 1; } } for (let j = m - 1; j >= 0; j--) { if (stack.length !== 0) board_[j][i] = stack.shift(); else board_[j][i] = 0; } } fn(board_); } } fn(board); return answer; }
'Algorithm > 프로그래머스' 카테고리의 다른 글
2022 KAKAO BLIND RECRUITMENT) 주차 요금 계산 (0) 2022.08.04 2018 KAKAO BLIND RECRUITMENT) [3차] 방금그곡 - Javascript 풀이 (0) 2022.08.02 2019 KAKAO BLIND RECRUITMENT) 후보키 - Javascript 풀이 (0) 2022.08.01 2021 KAKAO BLIND RECRUITMENT) 순위 검색 - Javascript 풀이 (0) 2022.07.31 2019 카카오 개발자 겨울 인턴십) 튜플 - Javascript 풀이 (0) 2022.07.27