1706. Where Will the Ball Fall

늘보·2021년 9월 30일
0

LeetCode

목록 보기
30/69

💡 풀이

const solution = grid => {
  let answer = [];
  for (let i = 0; i < grid[0].length; i++) answer[i] = roll(i, grid);

  return answer;
};

const roll = (i, grid) => {
  let prev;

  for (let j = 0; j < grid.length; j++) {
    prev = grid[j][i]; // 공이 현재 구르는 칸 이전을 나타내는 prev 변수를 만들어준다.
    i += prev; // prev에 i를 더해준다. 만약 아래 조건에 걸려서 -1을 return하지 않는다면, 공이 끝까지 구른 해당 column을 나타낼 것이다.

    if (i < 0 || i >= grid[0].length) return -1; // grid를 벗어났을 경우 -1을 return 한다.
    if (prev === 1 && grid[j][i] === -1) return -1; // 이전 요소가 1이고, 현재 요소가 1이라면 길이 막힌것이기 때문에 -1을 return한다.
    if (prev === -1 && grid[j][i] === 1) return -1; // 위의 반대 경우. 마찬가지다.
  }
  return i;
};

📝 정리

grid를 구른 공이 어느 column으로 떨어질지 묻는 문제였다. 만약 길이 막혀있다면, 서로 다른 column에서 출발한 양쪽 공은 모두 -1이 된다. 자세한 설명은 주석으로 하겠다.

수정, 지적을 환영합니다!

문제 링크

https://leetcode.com/problems/where-will-the-ball-fall/

LeetCode GitHub

https://github.com/tTab1204/LeetCode

0개의 댓글