Search

이차배열5_문제02_숫자이동

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

영상

문제

<script> /* [문제] 철수는 게임을 만들고 있다. game배열은 이차원으로 되어있다. 숫자8은 플레이어 위치를 뜻한다. 숫자0은 플레이어가 움직일 수 있는 위치이다. order배열은 플레이어가 움직이게 하는 명령어이다. 1,2,3,4는 차례대로 북, 동, 남, 서를 뜻한다. order의 이동대로 플레이어를 이동시키고 출력하시오. 플레이어가 벽에 붙어서, 더 이상 원하는 방향으로 이동할 수 없을 때는 "이동 불가"를 출력한다. [정답] 캐릭터의 현재 위치 = 2 , 2 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 북 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 서 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 남 이동 불가 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 남 이동 불가 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 서 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 동 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 */ let game = [ [0,0,0,0,0], [0,0,0,0,0], [0,0,8,0,0], [0,0,0,0,0], [0,0,0,0,0] ]; let order = [1,3,3,3,4,3,3,4,2]; </script>
Java
복사

해설

<script> /* [문제] 철수는 게임을 만들고 있다. game배열은 이차원으로 되어있다. 숫자8은 플레이어 위치를 뜻한다. 숫자0은 플레이어가 움직일 수 있는 위치이다. order배열은 플레이어가 움직이게 하는 명령어이다. 1,2,3,4는 차례대로 북, 동, 남, 서를 뜻한다. order의 이동대로 플레이어를 이동시키고 출력하시오. 플레이어가 벽에 붙어서, 더 이상 원하는 방향으로 이동할 수 없을 때는 "이동 불가"를 출력한다. [정답] 캐릭터의 현재 위치 = 2 , 2 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 북 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 남 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 서 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 남 이동 불가 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 남 이동 불가 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 서 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 동 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 */ let game = [ [0,0,0,0,0], [0,0,0,0,0], [0,0,8,0,0], [0,0,0,0,0], [0,0,0,0,0] ]; let order = [1,3,3,3,4,3,3,4,2]; let player = 8; let y = 0; let x = 0; for(let i=0; i<game.length; i++) { for(let j=0; j<game[i].length; j++) { if(game[i][j] == player) { y = i; x = j; break; } } } document.write("현재위치 = " + y + ", " + x + "<br>"); for(let i=0; i<order.length; i++) { for(let j=0; j<game.length; j++) { document.write(game[j] + "<br>"); } document.write("<br>"); let tempY = y; let tempX = x; if(order[i] == 1) { document.write("북<br>"); tempY -= 1; } else if(order[i] == 2) { document.write("동<br>"); tempX += 1; } else if(order[i] == 3) { document.write("남<br>"); tempY += 1; } else if(order[i] == 4) { document.write("서<br>"); tempX -= 1; } if(4 < tempY || tempY < 0 || 4 < tempX || tempX < 0) { document.write("이동 불가<br>"); continue; } game[y][x] = 0; y = tempY; x = tempX; game[y][x] = player; } for(let j=0; j<game.length; j++) { document.write(game[j] + "<br>"); } document.write("<br>"); </script>
Java
복사