Search

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

대분류
STEP08 이차리스트
소분류
이차리스트5_문제

영상

문제

''' [문제] 철수는 게임을 만들고 있다. 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 ''' 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], ] order = [1,3,3,3,4,3,3,4,2]
Python
복사

해설

''' [문제] 철수는 게임을 만들고 있다. 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 ''' 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], ] order = [1,3,3,3,4,3,3,4,2] # 캐릭터의 위치 pY = 0 pX = 0 for i in range(len(game)): for j in range(len(game[i])): if game[i][j] == 8: pY = i pX = j break print("캐릭터의 현재 위치 =", pY, ",", pX) for i in range(len(order)): for j in range(len(game)): for k in range(len(game[j])): print(game[j][k], end=" ") print() print() tempY = pY tempX = pX if order[i] == 1: # 북 tempY -= 1 print("북") elif order[i] == 2: # 동 tempX += 1 print("동") elif order[i] == 3: # 남 tempY += 1 print("남") elif order[i] == 4: # 서 tempX -= 1 print("서") if 5 <= tempY or tempY < 0: print("이동 불가") continue if 5 <= tempX or tempX < 0: print("이동 불가") continue game[pY][pX] = 0 pY = tempY pX = tempX game[pY][pX] = 8 for j in range(len(game)): for k in range(len(game[j])): print(game[j][k], end=" ") print()
Python
복사