ํ์ด
์ด ๋ฌธ์ ๋ ์๊ฐ๋ณด๋ค ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค
์ฒ์์๋ (์์๊ณต๊ณผ ๋ฒฝ๋ฉด์ ๊ฑฐ๋ฆฌ + ๋ฒฝ๋ฉด๊ณผ ๋์ฐฉ๊ณต์ ๊ฑฐ๋ฆฌ)์ ์ ๊ณฑ์ ๊ตฌํ๋๋ฐ
๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์์ ์ค์๊ฐ ๋์์ ์ค์ฐจ๊ฐ ์๊ธฐ๋๋ผ๊ตฌ์
๋ค๋ฅธ ๋ถ๋ค์ ํ์ด๋ฅผ ์ฐพ์๋ณด๋ ์ ์ ๋์นญ์์ผ์ ๊ตฌํ๋๊ฑฐ์์ต๋๋ค
๋์ฐฉ๊ณต์ ์ขํ๋ฅผ ์[0], ํ[1], ์ข[2], ์ฐ[3] ๋์นญ์ํด
๋์นญ์ํจ ๋์ฐฉ๊ณต์ ์ขํ์ ์์๊ณต ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํจ
๋์ ์์๊ณต์ด ๋ฒฝ๋ณด๋ค ๋์ฐฉ๊ณต์ ๋จผ์ ๋ง๋๋ ์ํฉ์ด๋ฉด ๊ฑด๋๋ด๋ค
์๋ฅผ ๋ค์ด
๋์ฐฉ๊ณต์ ์์ชฝ์ผ๋ก ๋์นญ์ํฌ๊ฑด๋ฐ(์์๊ณต์ ์๋จ๋ฒฝ์ ๋ถ๋ชํ๊ฒ ๋ง๋ค๊ณ ) &&
๋ ๊ณต์ด ๊ฐ์ ์ธ๋ก์ ์์ ์๊ณ &&
์์๊ณต์ด ๋์ฐฉ๊ณต ์๋์ชฝ์ ์๋ค๋ฉด
=> ๋ฒฝ์ ๋ถ๋ชํ๊ธฐ ์ ์ ๋์ฐฉ๊ณต์ ๋ถ๋ชํ๋ฏ๋ก continue;
์ดํด๊ฐ ์๊ฐ์๋ ๋ถ๋ค์ ์๋ ๋งํฌ ์ฐธ๊ณ ํด์ฃผ์ธ์!!
https://silverstonec.tistory.com/56
function solution(m, n, startX, startY, balls) {
const answer = [];
for (const [endX, endY] of balls) {
let min = Infinity;
//end๋ฅผ ์[0], ํ[1], ์ข[2], ์ฐ[3] ๋์นญ
const symmetryX = [endX, endX, -endX, m + m - endX];
const symmetryY = [n + n - endY, -endY, endY, endY];
for (let i = 0; i < 4; i++) {
//์์๊ณต์ด ๋ฒฝ๋ณด๋ค ๋์ฐฉ๊ณต์ ๋จผ์ ๋ง๋๋ ์ํฉ์ด๋ฉด ๊ฑด๋๋ด๋ค
//๋์ฐฉ๊ณต์ ์์ชฝ์ผ๋ก ๋์นญ์ํฌ๊ฑด๋ฐ(์์๊ณต์ ์๋จ๋ฒฝ์ ๋ถ๋ชํ๊ฒ ๋ง๋ค๊ฑด๋ฐ) &&
//๋ ๊ณต์ด ๊ฐ์ ์ธ๋ก์ ์์ ์๊ณ &&
//์์๊ณต์ด ๋์ฐฉ๊ณต ์๋์ชฝ์ ์๋ค๋ฉด
//=> ๋ฒฝ์ ๋ถ๋ชํ๊ธฐ ์ ์ ๋์ฐฉ๊ณต์ ๋ถ๋ชํ๋ฏ๋ก continue;
if (i === 0 && startX === endX && startY < endY) continue;
//๋๋จธ์ง 3๊ฐ๋ ์ด๋ฐ ์์ผ๋ก ์์๊ณต์ด ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ๋ฒฝ๋ฉด์ ๋จผ์ ๋ถ๋งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
if (i === 1 && startX === endX && startY > endY) continue;
if (i === 2 && startY === endY && startX > endX) continue;
if (i === 3 && startY === endY && startX < endX) continue;
//๋์นญ์ํจ ๋์ฐฉ๊ณต์ ์ขํ์ ์์๊ณต ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํจ
const length =
(startX - symmetryX[i]) ** 2 + (startY - symmetryY[i]) ** 2;
min = Math.min(min, length);
}
answer.push(min);
}
return answer;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]๋ฏธ๋ก ํ์ถ JS (2) | 2024.01.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ์์ ํ๋ ํฑํํ JS (1) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฆฌ์ฝ์ณ ๋ก๋ด JS (0) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ ์งํํ๊ธฐ JS (1) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค][PCCP ๊ธฐ์ถ๋ฌธ์ ] 3๋ฒ / ์๋ ๋ก๊ทธ ์๊ณ JSํ์ด (0) | 2023.12.29 |