[#640612019 KACA開発者冬季実習Crain哥抽出ゲーム-JavaScript
7521 ワード
問題の説明
ゲーム開発者「Jordy」はクレーン型の抽出機をモバイルゲームに変えようとしている.
ゲームの面白さを高めるために、「Jordie」は画面レイアウトとルールをゲームロジックに反映し、以下のようにします.
ゲーム画面は「1 x 1」サイズのセルからなる「NxN」サイズの正斜角メッシュで、上部にクレーン、右側にバスケットがあります.(上の図は、サイズが「5 x 5」の例を示しています).各格子間には様々なぬいぐるみがあり、ぬいぐるみのない格子は空いています.すべての人形は「1 x 1」の大きさのメッシュを占め、メッシュの一番下から順番に積み上げられます.ゲームユーザーはクレーンを左右に動かし、停止した位置から一番上の人形を持ち上げることができる.拾った人形はかごの中に積み上げられ、かごの一番下の格子から人形は順番にかごの中に積み上げられます.下の図は[1番、5番、3番の位置で人形を順番にかごに入れる様子を示しています.
同じ形の2人の人形が連続してかごに積まれると、2人の人形が爆発してかごから消えてしまいます.上の状態で、次に[5番]の位置で人形をかごに積み上げると、同じ形の人形が2つ消えてしまいます.
クレーンが作動すると、人形が挟まないことはありませんが、人形がないところでクレーンを起動すれば、何も起こりません.また、バスケットが十分大きく、すべての人形を収容できると仮定します.(図中、スクリーン表示制限は5コマのみ表示)
ゲーム画面上の格子状態の2次元配列板と人形を挟むために、起動クレーンの位置を含む配列動作をパラメータとして指定した場合、solution関数を完了し、クレーンをすべて起動させ、爆発して消えた人形の個数を返します.
[制限]
I/O例
I/O例説明
I/O例#1
人形の初期状態は、与えられた問題の例と同じである.クレーンは[1,5,3,5,1,2,1,4]号の位置から順に人形を持ち上げ、かごに入れたが、状態は下図のようにかごの中で爆発して消えた人形が4個あった.
に答える
巡視
moves
列は、board
内に家屋が存在する場合のみ積載され、積載前に以下の2つのケースを考慮した.function solution(board, moves) {
let answer = 0;
let myStack = [];
moves.map( position => {
for(let i=0; i<board.length; i++){
//집을게 존재
if(board[i][position-1]){
// stack이 비어있는지 판단
if(myStack.length !== 0){
if(myStack[myStack.length-1] === board[i][position-1]){
myStack.pop();
answer += 2;
} else {
myStack.push(board[i][position-1]);
}
} else {
myStack.push(board[i][position-1]);
}
board[i][position-1] = 0;
break;
}
}
});
return answer;
}
Reference
この問題について([#640612019 KACA開発者冬季実習Crain哥抽出ゲーム-JavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@jiseong/64061-2019-카카오-개발자-겨울-인턴십-크레인-인형뽑기-게임-JavaScriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol