Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프록시
- 클라우드 서버
- 다익스트라 알고리즘
- 세마포어란?
- 호스팅
- 플로이드 워셜
- 세마포어와 뮤텍스의 차이
- 동기화
- floyd-warshall
- 뮤텍스란?
- 플로이드 와샬
- 싸피 합격
- Proxy
- 최단 경로
- 호스팅이란?
- 프록시서버
- Synchronization
- Dijkstra Algorithm
- 삼성 청년 SW 아카데미
- 세마포어
- 싸피 면접 후기
- 서버 호스팅
- 웹 호스팅
- 세마포어와 뮤텍스
- 뮤텍스
- Proxy Server
- 다익스트라
- 싸피
- SSAFY
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][자바스크립트] 프렌즈4블록 본문
알고리즘/프로그래머스(Programmers)
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][자바스크립트] 프렌즈4블록
NineOne 2021. 5. 6. 23:12programmers.co.kr/learn/courses/30/lessons/17679?language=javascript
function solution(m, n, board) {
let answer = 0;
const visited = Array.from(Array(m), () => new Array(n));
board = board.map((arr) => arr.split(""));
let limit = m * n;
function checkFriends() {
let flag = false;
for (let i = 0; i < m - 1; i++) {
for (let j = 0; j < n - 1; j++) {
let target = board[i][j];
if (target == 0) continue;
if (board[i + 1][j] != target || board[i][j + 1] != target || board[i + 1][j + 1] != target)
continue;
visited[i][j] = visited[i + 1][j] = visited[i][j + 1] = visited[i + 1][j + 1] = true;
flag = true;
}
}
return flag;
}
function removeFriends() {
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (visited[i][j] === undefined) continue;
board[i][j] = 0;
visited[i][j] = undefined;
answer++;
}
}
}
function moveFriends() {
for (let j= n-1; j>=0; j--) {
for (let i = m-1; i >=0; i--) {
if (board[i][j] == 0) {
let index = 0;
while (i - index >= 0) {
if (board[i - index][j] == 0) {
index++;
continue;
}
board[i][j] = board[i - index][j];
board[i - index][j] = 0;
break;
}
}
}
}
}
while (checkFriends()) {
removeFriends();
if (limit <= answer) break;
moveFriends();
}
return answer;
}
정리1. board를 순회하면서 4개짜리 블록을 찾는다. (찾으면 해당 자리 visited[][] = true)
2. 저장한 배열을 순회하면 board에 0으로 표시를 해주고 answer를 증가시켜준다.
3. 배열을 아래로 내려준다.
4. 1번을 반복
'알고리즘 > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스][찾아라 프로그래밍 마에스터][자바] 게임 맵 최단거리 (0) | 2021.05.10 |
---|---|
[프로그래머스][2020 카카오 인턴십][자바스크립트] 키패드 누르기 (0) | 2021.05.07 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][자바스크립트] 실패율 (0) | 2021.05.05 |
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바스크립트] 괄호 변환 (0) | 2021.05.04 |
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바스크립트] 문자열 압축 (0) | 2021.05.03 |
Comments