강의로 돌아가기
Chae-Sumin

7, 9 테케가 뭘까요..? (코드첨부)

뭐가 문제인지 모르겠는데 7, 9만 계속 실패하네요...

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function solution(n, m, x, y, queries) {
    const az = {x1: x, y1: y, x2: x, y2: y};
    const dir = [{x: 0, y: 1}, {x: 0, y: -1}, {x: 1, y: 0}, {x: -1, y: 0}];
    while (queries.length) {
        const [d, dx] = queries.pop();
        const newaz = {...az};
        Object.keys(newaz).forEach(k => newaz[k] += dir[d][k[0]] * dx);
        if (az.x1 == 0 && newaz.x1 > az.x1) newaz.x1 = az.x1;
        if (az.y1 == 0 && newaz.y1 > az.y1) newaz.y1 = az.y1;
        if (az.x2 == n - 1 && newaz.x2 < az.x2) newaz.x2 = az.x2;
        if (az.y2 == m - 1 && newaz.y2 < az.y2) newaz.y2 = az.y2;
        if ((newaz.x1 < 0 && newaz.x2 < 0) || (newaz.x1 >= n && newaz.x2 >= n) || (newaz.y1 < 0 && newaz.y2 < 0) || (newaz.y1 >= m && newaz.y2 >= m)) return 0;
        Object.keys(newaz).forEach(k => az[k] = newaz[k] < 0 ? 0 : (newaz[k] >= (k[0] == 'x' ? n : m) ? (k[0] == 'x' ? n : m) - 1 : newaz[k]));
    }
    return (az.x2 - az.x1 + 1) * (az.y2 - az.y1 + 1);
}
  • TH a.k.a Abangpa1ace

    마지막 return 부분에 x좌표차, y좌표차 값들을 BigInt 처리하니까 해결되더라고요!!

    TH a.k.a Abangpa1ace―2022.04.17 17:52
  • Chae-Sumin

    아.... int 크기 생각을 왜 안했지... 감사합니다ㅠㅠㅠ 너무 어리석었었네요

    Chae-Sumin―2022.04.26 13:47
  • beepbipbp

    저도 크기 생각을 깜빡했네요ㅋㅋㅋ 감사합니다!

    beepbipbp―2022.05.25 22:05
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.