Search

이차배열5_문제07_퍼즐게임

대분류
STEP08 이차배열
문제 난이도
LV08
소분류
이차배열5_문제

영상

문제

<script> /* [문제] 철수는 게임을 만들고 있다. game배열은 이차원으로 되어있다. game배열은 안에 block배열의 숫자를 채워 넣는 게임이다. 배열의 값1은 block이 차 있는 것을 의미한다. 배열의 값0은 block이 비어있는 것을 의미한다. [조건1] block은 이번에 제시된 모양이다. block의 모양을 game 배열에 넣을 수 있다면 채워 넣고, 넣을 수 없다면 "gameover"를 출력하시오. [조건2] block을 채워 넣었을 때 가로로 1이 연속 5개이거나, 세로로 1이 연속 5개이면 그 줄은 전부 숫자 2로 변경하시오. [정답] [0, 2, 0, 1, 0] [1, 2, 0, 1, 1] [0, 2, 1, 1, 1] [1, 2, 1, 1, 0] [0, 2, 1, 0, 0] */ let game = [ [0,1,0,1,0], [1,1,0,1,1], [0,1,1,1,1], [1,1,0,1,0], [0,0,0,0,0] ]; let block = [ [0,1], [1,1] ]; </script>
Java
복사

해설

<script> /* [문제] 철수는 게임을 만들고 있다. game배열은 이차원으로 되어있다. game배열은 안에 block배열의 숫자를 채워 넣는 게임이다. 배열의 값1은 block이 차 있는 것을 의미한다. 배열의 값0은 block이 비어있는 것을 의미한다. [조건1] block은 이번에 제시된 모양이다. block의 모양을 game 배열에 넣을 수 있다면 채워 넣고, 넣을 수 없다면 "gameover"를 출력하시오. [조건2] block을 채워 넣었을 때 가로로 1이 연속 5개이거나, 세로로 1이 연속 5개이면 그 줄은 전부 숫자 2로 변경하시오. [정답] [0, 2, 0, 1, 0] [1, 2, 0, 1, 1] [0, 2, 1, 1, 1] [1, 2, 1, 1, 0] [0, 2, 1, 0, 0] */ let game = [ [0,1,0,1,0], [1,1,0,1,1], [0,1,1,1,1], [1,1,0,1,0], [0,0,0,0,0] ]; let block = [ [0,1], [1,1] ]; let y = 0; let x = 0; let check = false; for(let i=0; i<game.length - 1; i++) { for(let j=0; j<game[i].length - 1; j++) { let count = 0; if(game[i][j + 1] == 0) { count += 1; } if(game[i + 1][j] == 0) { count += 1; } if(game[i + 1][j + 1] == 0) { count += 1; } if(count == 3) { y = i; x = j; check = true; break; } } } if(check == false) { document.write("gameover"); } else { // 1로 채우기 for(let i=0; i<game.length; i++) { game[y][x + 1] = block[0][1]; game[y + 1][x] = block[1][0]; game[y + 1][x + 1] = block[1][1]; document.write(game[i] + "<br>"); } document.write("<br>"); // 2로 채우기 for(let i=0; i<game.length; i++) { // 가로 검사 let count = 0; for(let j=0; j<game[i].length; j++) { if(game[i][j] == 1) { count += 1; } } if(count == 5) { for(let j=0; j<game[i].length; j++) { game[i][j] = 2; } } // 세로검사 count = 0; for(let j=0; j<game[i].length; j++) { if(game[j][i] == 1) { count += 1; } } if(count == 5){ for(let j=0; j<game[i].length; j++) { game[j][i] = 2; } } } for(let i=0; i<game.length; i++) { document.write(game[i] + "<br>"); } } </script>
Java
복사