[구현] 보드게임

이영광·2021년 8월 28일
0

알고리즘

목록 보기
14/16
  • N * N 크기를 가진 보드판 위에서 게임을하려고한다. 게임의 룰인 이렇다

1.좌표 왼쪽 상단 (0,0)에 말을 놓는다
2.말은 상,하,좌,우로 이동할 수 있고, 플레이어가 조작할수있다.
3.조작의 기회는 딱 한번 주어진다.
4.조작할 때 U,D,L,R은 각각 상,하,좌,우 를 의미하며 한 줄에 띄어쓰기 없이 써야 한다. 예시 :UDDLLRRDRR, RRRRR
5.한 번 움직일 때마다 한 칸씩 움직이게 되며, 그 칸 안의 요소인 숫자를 획득할수 있다.
6.방문한 곳을 또 방문해도 숫자를 획득할 수 있다.
7.보드 밖을 나간 말은 OUT처리가 된다.
8.칸 안의 숫자는 0또는 1 뿐
왼쪽의 왼쪽상단(0,0)은 고정
9.획득한 숫자를 합산하여 숫자가 제일 큰 사람이 이기게 된다.

보드판이 담긴 board와 조작하려고 하는 문자열 operation이 주어질때 , 말이 해당 칸을 지나가면서 획득한 숫자의 합을 구하는 함수를 작성하세요


입출력예시

const board1 = [
  [0, 0, 0, 1],
  [1, 1, 1, 0],
  [1, 1, 0, 0],
  [0, 0, 0, 0]
]
const output1 = boardGame(board1, 'RRDLLD');
console.log(output1); // 4


const board2 = [
  [0, 0, 1],
  [1, 1, 1],
  [1, 0, 0]
]
const output2 = boardGame(board2, 'UUUDD');
console.log(output2); // 'OUT'

const board3 = [
  [0, 0, 0, 0, 0],
  [0, 0, 1, 0, 0],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 1, 0],
  [0, 0, 0, 0, 0]
]
const output3 = boardGame(board3, 'DDRRRUDUDUD');
console.log(output3); // 0

function boardGame(board, operation) {

    let score = 0
    let arr = operation
    let x = 0
    let y = 0
    let cur = board[0][0]

    for(let n = 0 ; n<arr.length ; n++){

        if(arr[n] === 'U') y -= 1, x += 0
        if(arr[n] === 'D') y += 1, x += 0
        if(arr[n] === 'L') y += 0, x -= 1
        if(arr[n] === 'R') y += 0, x += 1

        if(y<0 || board.length < y || x<0 || board.length < x ){
          return 'OUT'
        }
          cur = board[y][x]
          score += cur
    }

    return score
};

코드리뷰:

점수를 계산해야되는 score 를 성정한후
시작점 설정과

이동시 움직임을 저장할 x,y축을 만들어주고

반복문안에서 스트링들을 만날시 y,x의 점수를 기록해나간다

profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글