์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- suspense react-query
- ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- ์ค์ฝํ
- app router emotion
- js ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- emtion app router
- ๊ตฌ๋ฆํค
- ๋ฐฑ์ค 1339๋ฒ js
- ๋ฐฑ์ค 1339๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- js ์ค์ฝํ
- ์ต์ ๋์ฒด์ด๋
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด ์์ถ
- suspense ๋ณ๋ชฉํ์
- suspense ๋น๋๊ธฐ
- next13 emotion
- js ๋ฌธ์์ด ์์ถ
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 2108 ์๋ฐ์คํฌ๋ฆฝํธ
- ์นด์นด์ค ์ฝํ
- ๋ฆฌ์กํธ์ฟผ๋ฆฌ suspense
- js
- ๋ฐฑ์ค 2108 nodejs
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- ์ฌ์ฉ์ฑ ๊ฐ์
- ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๊ณ
- suspense ๋์์๋ฆฌ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
- ๋ฐฑ์ค 1339๋ฒ nodejs
- emotion RSC
- Today
- Total
Lennon FE
[ํ๋ก๊ทธ๋๋จธ์ค] 1์ฐจ ํ๋ ์ฆ4๋ธ๋ก (js) ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] 1์ฐจ ํ๋ ์ฆ4๋ธ๋ก (js)
Lennon 2021. 10. 31. 05:49https://programmers.co.kr/learn/courses/30/lessons/17679/solution_groups?language=javascript
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
function popBlock(board){
let count = 0;
for(let i=1; i<board.length; i++){
for(let j=1; j<board[i].length; j++){
const value = board[i][j];
if(value === 0) continue;
const [left, up, diagonal] = [board[i][j-1], board[i-1][j], board[i-1][j-1]];
if((value===up || up===value+String(1)) &&
(value===left || left===value+String(1)) &&
(value===diagonal || diagonal===value+String(1))){
if(up.length < 2){
board[i-1][j] = up+String(1);
}
if(left.length < 2){
board[i][j-1] = left+String(1);
}
if(diagonal.length < 2){
board[i-1][j-1] = diagonal+String(1);
}
if(board[i][j].length < 2){
board[i][j] = value+String(1);
}
count++;
}
}
}
return [board,count];
}
function pullDown(board){ // ํ๊ณผ ์ด ๋ค์ง๊ณ 0 ์์ผ๋ก ๋ก๊ธด ํ ๋ค์ ๋ค์ง์ด์ return
let pullDownArr = [];
let fnResult = [];
for(let i = 0; i < board[1].length; i++){ // mํ n์ด ๋ฐฐ์ด nํ m์ด๋ก ๋ณํ
let arr = [];
for(let j = 0; j < board.length; j++){
arr.push(board[j][i]);
}
arr = arr.map(v => {
if(v.length > 1) return 0;
else return v;
})
let sortArr = [];
for(let idx=0; idx < arr.length; idx++){
if(arr[idx]===0) sortArr.unshift(0);
else sortArr.push(arr[idx]);
} // 0์์ผ๋ก ๋ก๊ธฐ๊ธฐ
pullDownArr.push(sortArr);
}
for(let i = 0; i < pullDownArr[1].length; i++){ // 0์์ผ๋ก ๋ก๊ธด ํ ์๋๋๋ก ๋ณํ
let arr2 = [];
for(let j = 0; j < pullDownArr.length; j++){
arr2.push(pullDownArr[j][i]);
}
fnResult.push(arr2)
}
return fnResult; // ๋ฆฌํด
}
function solution(m, n, board) {
board = board.map(v => v.split(""));
let answer = popBlock(board)[0];
while(true){
answer = popBlock(answer)[0];
answer = pullDown(answer);
if(popBlock(answer)[1] === 0) break;
}
return answer.reduce((prev, cur) => {
let count = 0;
cur.forEach(v => {
if(v===0) count++;
})
return prev+count;
},0);
}
popBlock ํจ์ => 2x2 ๋ธ๋ก์ด pop๋๋ ๊ฑธ ๊ธฐ๋ก (pop๋๋ฉด ํด๋น index๊ฐ์ 1์ ๋ถํ์ ์ ์ฅ) ex) R -> R1
=> 2X2๋ฟ๋ง ์๋๋ผ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ๋ ์ ๊ฑฐํด์ผ ํ๋ฏ๋ก if๋ฌธ ์ฉ์ดํ๊ฒ ์ฌ์ฉํ๊ธฐ์ํจ (R==R1)
=> ํ ์คํธ์ผ์ด์ค 8๋ฒ 10๋ฒ์ด ์๋๋ฉด ๋ณํํด์ฃผ๋ ๋ฌธ์๊ฐ ์๋ชป๋ ๊ฑธ ์๋ ์์
ex) R1์ธ๋ฐ ํด๋น๋์ด ๋ 1์ ๋ํด R11์ด ๋จ => ํจ์ ๋ด if์กฐ๊ฑด์ ์ ๋ง์ pop์ด ์๋จ
=> 1์ ํ๋๋ง ๋ถ์ ์ ์๋๋ก ์กฐ์ ( ex) 15๋ผ์ธ)
ํด๋น ํจ์์์ count๊ฐ 0์ด๋ฉด solutionํจ์์์ while์ break๊ฑธ ์ ์๋๋ก ํจ
=> pop๋๋ 2x2 ๋ธ๋ก์ด ์์ผ๋ฉด ๋๋ด์ผํจ
pullDown ํจ์ => ์ฐ์ฐ์ด ๋๋ ํ pop๋ ๋ถ์์ ์์ ์๋ ๊ฐ๋ค์ ๋ด๋ฆฌ๋ ํจ์
๋ฌธ์ ๋ค์ 1์ด ๋ถ์ ๊ฐ์ 0์ผ๋ก ๋ฐ๊พผ ํ ํ๋ ฌ์ ๋ค์ง๊ณ 0์ ์์ผ๋ก ๋ก๊ธด ํ ๋ค์ ํ๋ ฌ์ ๋ค์ง๊ณ return
=> ex) [ [A, B, C], [A, A1, C] ] => [ [A, A], [B, A1], [C, C] ] => [ [A, A], [0, B], [C, C] ] => [ [A, 0, C], [A, B, C] ]
๊ฒฐ๊ณผ ํ๋ ฌ(3x2) 2x3์ผ๋ก ๋ค์ง์ ๋ฌธ์๋ค์ 1์๋ ๊ฐ ๋ค์ 3x2๋ก๋ง๋ค๊ณ ๋ฆฌํด
=>0์ผ๋ก ๋ณํ ํ ๋งจ ์์ผ๋ก ๋ก๊น
solution ํจ์์์ while๋ฌธ์ ํตํด ๋ฃจํ๋ฅผ ๋ ํ ๊ฒฐ๊ณผ ํ๋ ฌ์ ๋ํด 0์ ๊ฐ์(pop๋ ๊ฐ์)๋ฅผ ์ผ ํ returnํ๋ฉด ์ ๋ต!
๋ค์์ ํ๋์ ํจ์๋ ํ๋์ ๊ธฐ๋ฅ์ ํ๋๋ก ๋ ๋๋ ์ ํ์ด๋ด์ผ๊ฒ ๋ค.
'๐ฅ Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ด ๋๋ง์๊ธฐ (js) (0) | 2021.11.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ต๋ํ (js) (0) | 2021.10.31 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (js) (0) | 2021.10.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฉ๋ด ๋ฆฌ๋ด์ผ (js) (0) | 2021.10.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ํด๋ฆฌ ์ฑ๋ฆฐ์ง 10์ฃผ์ฐจ ๊ต์ ์ ๋ณ ๋ง๋ค๊ธฐ (js) (0) | 2021.10.30 |