ํฐ์คํ ๋ฆฌ ๋ทฐ
[2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ]ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ
choi95 2021. 7. 12. 14:42๋ฌธ์
๊ฒ์๊ฐ๋ฐ์์ธ "์ฃ ๋ฅด๋"๋ ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ธฐ๊ณ๋ฅผ ๋ชจ๋ฐ์ผ ๊ฒ์์ผ๋ก ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
"์ฃ ๋ฅด๋"๋ ๊ฒ์์ ์ฌ๋ฏธ๋ฅผ ๋์ด๊ธฐ ์ํด ํ๋ฉด ๊ตฌ์ฑ๊ณผ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒ์ ๋ก์ง์ ๋ฐ์ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฒ์ ํ๋ฉด์ "1 x 1" ํฌ๊ธฐ์ ์นธ๋ค๋ก ์ด๋ฃจ์ด์ง "N x N" ํฌ๊ธฐ์ ์ ์ฌ๊ฐ ๊ฒฉ์์ด๋ฉฐ ์์ชฝ์๋ ํฌ๋ ์ธ์ด ์๊ณ ์ค๋ฅธ์ชฝ์๋ ๋ฐ๊ตฌ๋๊ฐ ์์ต๋๋ค. (์ ๊ทธ๋ฆผ์ "5 x 5" ํฌ๊ธฐ์ ์์์ ๋๋ค). ๊ฐ ๊ฒฉ์ ์นธ์๋ ๋ค์ํ ์ธํ์ด ๋ค์ด ์์ผ๋ฉฐ ์ธํ์ด ์๋ ์นธ์ ๋น์นธ์ ๋๋ค. ๋ชจ๋ ์ธํ์ "1 x 1" ํฌ๊ธฐ์ ๊ฒฉ์ ํ ์นธ์ ์ฐจ์งํ๋ฉฐ ๊ฒฉ์์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ฐจ๊ณก์ฐจ๊ณก ์์ฌ ์์ต๋๋ค. ๊ฒ์ ์ฌ์ฉ์๋ ํฌ๋ ์ธ์ ์ข์ฐ๋ก ์์ง์ฌ์ ๋ฉ์ถ ์์น์์ ๊ฐ์ฅ ์์ ์๋ ์ธํ์ ์ง์ด ์ฌ๋ฆด ์ ์์ต๋๋ค. ์ง์ด ์ฌ๋ฆฐ ์ธํ์ ๋ฐ๊ตฌ๋์ ์์ด๊ฒ ๋๋ ๋ฐ, ์ด๋ ๋ฐ๊ตฌ๋์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ธํ์ด ์์๋๋ก ์์ด๊ฒ ๋ฉ๋๋ค. ๋ค์ ๊ทธ๋ฆผ์ [1๋ฒ, 5๋ฒ, 3๋ฒ] ์์น์์ ์์๋๋ก ์ธํ์ ์ง์ด ์ฌ๋ ค ๋ฐ๊ตฌ๋์ ๋ด์ ๋ชจ์ต์ ๋๋ค.
๋ง์ฝ ๊ฐ์ ๋ชจ์์ ์ธํ ๋ ๊ฐ๊ฐ ๋ฐ๊ตฌ๋์ ์ฐ์ํด์ ์์ด๊ฒ ๋๋ฉด ๋ ์ธํ์ ํฐ๋จ๋ ค์ง๋ฉด์ ๋ฐ๊ตฌ๋์์ ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์ ์ํ์์ ์ด์ด์ [5๋ฒ] ์์น์์ ์ธํ์ ์ง์ด ๋ฐ๊ตฌ๋์ ์์ผ๋ฉด ๊ฐ์ ๋ชจ์ ์ธํ ๋ ๊ฐ๊ฐ ์์ด์ง๋๋ค.
ํฌ๋ ์ธ ์๋ ์ ์ธํ์ด ์ง์ด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ์์ผ๋ ๋ง์ฝ ์ธํ์ด ์๋ ๊ณณ์์ ํฌ๋ ์ธ์ ์๋์ํค๋ ๊ฒฝ์ฐ์๋ ์๋ฌด๋ฐ ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค. ๋ํ ๋ฐ๊ตฌ๋๋ ๋ชจ๋ ์ธํ์ด ๋ค์ด๊ฐ ์ ์์ ๋งํผ ์ถฉ๋ถํ ํฌ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. (๊ทธ๋ฆผ์์๋ ํ๋ฉดํ์ ์ ์ฝ์ผ๋ก 5์นธ๋ง์ผ๋ก ํํํ์์)
๊ฒ์ ํ๋ฉด์ ๊ฒฉ์์ ์ํ๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด board์ ์ธํ์ ์ง๊ธฐ ์ํด ํฌ๋ ์ธ์ ์๋์ํจ ์์น๊ฐ ๋ด๊ธด ๋ฐฐ์ด moves๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํฌ๋ ์ธ์ ๋ชจ๋ ์๋์ํจ ํ ํฐํธ๋ ค์ ธ ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
[์ ํ์ฌํญ]
- board ๋ฐฐ์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ํฌ๊ธฐ๋ "5 x 5" ์ด์ "30 x 30" ์ดํ์ ๋๋ค.
- board์ ๊ฐ ์นธ์๋ 0 ์ด์ 100 ์ดํ์ธ ์ ์๊ฐ ๋ด๊ฒจ์์ต๋๋ค.
- 0์ ๋น ์นธ์ ๋ํ๋ ๋๋ค.
- 1 ~ 100์ ๊ฐ ์ซ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธํ์ ๋ชจ์์ ์๋ฏธํ๋ฉฐ ๊ฐ์ ์ซ์๋ ๊ฐ์ ๋ชจ์์ ์ธํ์ ๋ํ๋ ๋๋ค.
- moves ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- moves ๋ฐฐ์ด ๊ฐ ์์๋ค์ ๊ฐ์ 1 ์ด์์ด๋ฉฐ board ๋ฐฐ์ด์ ๊ฐ๋ก ํฌ๊ธฐ ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
boardmovesresult
[[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]] | [1,5,3,5,1,2,1,4] | 4 |
์ ์ถ๋ ฅ ์์ ๋ํ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์ธํ์ ์ฒ์ ์ํ๋ ๋ฌธ์ ์ ์ฃผ์ด์ง ์์์ ๊ฐ์ต๋๋ค. ํฌ๋ ์ธ์ด [1, 5, 3, 5, 1, 2, 1, 4] ๋ฒ ์์น์์ ์ฐจ๋ก๋๋ก ์ธํ์ ์ง์ด์ ๋ฐ๊ตฌ๋์ ์ฎ๊ฒจ ๋ด์ ํ, ์ํ๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ผ๋ฉฐ ๋ฐ๊ตฌ๋์ ๋ด๋ ๊ณผ์ ์์ ํฐํธ๋ ค์ ธ ์ฌ๋ผ์ง ์ธํ์ 4๊ฐ ์ ๋๋ค.
๋ฌธ์ ํ์ด
- ํฌ๋ ์ธ์ด ์ด๋ํด์ผ ํ ์์น ์ ๋ณด๊ฐ ๋ด๊ธด moves ๋ฐฐ์ด์ ์ํ ๋ฐ ์ฐธ์กฐ
- ํด๋น ์์น์ ์๋ ๋ณด๋์ ๊ฐ์ฅ ์๋จ ์์ดํ ์ ์ถ์ถ
- ์ถ์ถํ ์์ดํ ์ ์คํ์ ์ ์ฌ: ์์ดํ ์ด 0์ผ ๊ฒฝ์ฐ๋ ๋น ๋ณด๋์ด๊ธฐ ๋๋ฌธ์ ์ ์ฌํ์ง ์๊ณ ๋ค์ ๋ณด๋๋ก ๋์ด๊ฐ
- ์คํ์ ์ฐ์ํด์ ๋์ผํ ์์ดํ ์ด ์ ์ฌ๋ ๊ฒฝ์ฐ๋ ํด๋น ์์ดํ ๋ค์ ์ญ์ ํด์ฃผ๊ณ ์ญ์ ์ฐ์ฐ์ด ๋ฐ๋ณต๋ ๋งํผ ํ์ ์ฆ๊ฐ
์ฝ๋
function solution(b, m) {
let answer = 0;
let stack = [];
for(let i = 0; i < m.length; i++) {
let curBoard = b[m[i] - 1]; //๋ณด๋์ ๊ฐ ์ธ๋ฑ์ค ์์๋ ๋ฐฐ์ด ๋ด์ ์ ์ฌ๋๊ธฐ ๋๋ฌธ์ 0๋ถํฐ ์์ํ์ฌ, ์ด๋ฅผ ๋ฐ์ํด 1์ ๊ฐ์ฐ
let curItem = curBoard.pop(); //ํ์ฌ ๋ณด๋์์ ๋ฝ์๋ธ ์์ดํ
์ ์ฐธ์กฐ
if(curItem === 0) continue; //๋น ๋ณด๋์ผ ๊ฒฝ์ฐ์๋ ์ ์ฌํ์ง ์๊ณ ๋ค์ ๋ณด๋๋ก ๋์ด๊ฐ
else {
stack.push(curItem);
if(stack[stack.length - 1] === stack[(stack.length - 1) - 1]) { //๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ฅ๋ ์ธ๋ฑ์ค ์์์ ์ง์ ์ ์ ์ฅ๋ ์ธ๋ฑ์ค ์์๋ฅผ ๋น๊ต
while(stack.pop() !== stack[(stack.length - 1) - 1]) {
answer++;
}
}
}
}
return answer;
}
let 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]];
let moves = [1,5,3,5,1,2,1,4];
console.log(solution(board, moves));
์ค๋ต
๋ฌธ์ ์์์ ์ธํ ๋ฝ๊ธฐ ๊ธฐ๊ณ๋ ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋ 2์ฐจ์ ๋ฐฐ์ด์ด๋ค.์์ ๋ฌธ์ ๋ฅผ ํ์ดํ ์, ๊ฐ board๋ฅผ ์ ๊ทผํ ๋ ํ์ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์์ง์๋ค.
์ด๋ ๊ฒ ํ์ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์์ง์ด๋ ๊ฒ์ ๋ฌธ์ ์์์ ํฌ๋ ์ธ๊ณผ ๊ฐ์ด ์ข์ฐ๋ก ์์ง์ด๋ ๊ฒ์ด ์๋๋ผ, ์์๋๋ก ์์ง์ด๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ์ด ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ํด์ ์ธ๋ฑ์ค๋ฅผ ์์ง์ฌ์ผ ํ๋ค.
๋ํ ์์ดํ ์ ๋ฝ์ ๋ค์๋ ํด๋น ์๋ฆฌ์ ์์ดํ ์ด ์กด์ฌํ์ง ์๋๋ค๋ ์๋ฏธ๋ก 0์ ์ด๊ธฐํํด์ค์ผ ๋์ง๋ง ์์ ๋ฌธ์ ์์๋ pop์ฐ์ฐ์ ํ์ฌ ํด๋น ์์ดํ ์ ๋ฝ๊ธฐ๋ง ํ ๋ฟ, ๊ทธ ์์ดํ ์ด ์๋ ๊ณต๊ฐ์ ๋น์ด ์๋ ๊ณต๊ฐ์ผ๋ก ๋ง๋ค์ด์ฃผ์ง ๋ชปํ๋ค.
์ฝ๋
function solution(board, moves){
let answer=0;
let stack=[];
moves.forEach(pos => {
for(let i=0; i<board.length; i++){
if(board[i][pos-1]!==0){ //๋น์ด ์๋ ์์ดํ
์ผ ๊ฒฝ์ฐ์๋ ์ฐ์ฐ ์ํํ์ง ์์
let tmp=board[i][pos-1];
board[i][pos-1]=0; //์์ดํ
์ ๋ฝ์ ๋ค์๋ ํด๋น ๋น์นธ์ 0์ผ๋ก ์ด๊ธฐํ
if(tmp===stack[stack.length-1]){
stack.pop();
answer+=2;
}
else stack.push(tmp);
break; //์์ดํ
์ ๋ฝ์์ผ๋ฉด ๋ ์ด์ ํด๋น ๋ณด๋ ๋ด์ ๊ทธ ๋ค์ ์์ดํ
์ ๋ฝ์ผ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ข
๋ฃ
}
}
});
return answer;
}
let a=[[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]];
let b=[1, 5, 3, 5, 1, 2, 1, 4];
console.log(solution(a, b));
'์๊ณ ๋ฆฌ์ฆ > ๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ]์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด (0) | 2021.08.20 |
---|---|
[2021 KAKAO BLIND RECRUITMENT]์ ๊ท ์์ด๋ ์ถ์ฒ_์ ๊ท ํํ์์ ๋ํด (0) | 2021.08.19 |
๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2021.08.18 |
[๋ ์ ์๊ณ ๋ฆฌ์ฆ]์ต๋ ์ ์ ๊ตฌํ๊ธฐ/ํ๋ฒํ ๋ฐฐ๋ญ ๋ฌธ์ (0) | 2021.08.17 |
[ํ๊ตญ์ ๋ณด์ฌ๋ฆผํผ์๋]์ ๋ง๋๊ธฐ (0) | 2021.07.14 |