๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/340211
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ฅํ์ด
๊ฐ ๋ก๋ด๋ค์ด 0์ด์ผ๋, 1์ด์ผ๋, 2์ด ์ผ๋ .. n ์ด ์ผ๋ ์์น๋ฅผ arr์ ๋ด์๋ค.
์๋ฅผ๋ค์ด 1๋ฒ ๋ก๋ด์ด 0 ์ด์ผ๋ (1,1), 1์ด์ผ๋ (2,3), 2์ด์ผ๋ (3,3) ์ด๋ผ๋ฉด ์ด๋ฅผ [ [1,1], [2,3], [3,3] ] ๋ก ๊ธฐ๋กํ์๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ก๋ด๊ฐฏ์๋งํผ์ arr๊ฐ ์์ฑ๋๊ณ ๊ฐ arr์ index๊ฐ ๊ฐ๊ณ ๋์ผํ ์์น์ ์์ ๋๋ฅผ ํฌ์ฐฉํ์ฌ ์ถฉ๋ํ์๋ฅผ ์ฆ๊ฐ ์์ผฐ๋ค.
function solution(points, routes) {
// ํ์ฌ row,column ์ ํ๊ฒ์ผ๋ก ํฌ์ธํธ์ row์ column ๋ฃ์ผ๋ฉด
// ํ์นธ ์ด๋ํ์ ๋ ์ขํ๋ฅผ ๋ฐํํ๋ค.
const getNextPosition =(r,c,targetR,targetC)=>{
if(r!==targetR) return r > targetR ? [r-1,c] : [r+1,c]
if(c!==targetC) return c > targetC ? [r,c-1] : [r,c+1]
return [r,c]
}
let arr = []
let maxIndex = 0
routes.forEach((route)=>{
let startPoint = route.shift()
let history =[points[startPoint-1]]
while(route.length){
let [nowR,nowC] = history.at(-1)
let [targetR,targetC] = points[route[0]-1]
let [nextR,nextC] = getNextPosition(nowR,nowC,targetR,targetC)
history.push([nextR,nextC])
if(nextR === targetR && nextC === targetC){
route.shift()
}
}
// ๋ก๋ด๋ค์ด ๊ฐ์ ์ด๋ํ๋ ์๊ฐ์ด ๋ชจ๋ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ์ต๋๋ก ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์์์ผํจ
maxIndex = Math.max(maxIndex,history.length-1)
arr.push(history)
})
let answer = 0
let index = 0
while(index<=maxIndex){
let crushPoints = []
for(let i=0; i<arr.length-1; i++){
for(let j=i+1; j<arr.length; j++){
if(
arr[i][index] && arr[j][index] &&
arr[i][index][0]===arr[j][index][0]
&& arr[i][index][1]===arr[j][index][1]
){
let alreadyInclude = crushPoints.some(
(point)=>point[0]===arr[i][index][0] && point[1]===arr[i][index][1]
)
if(!alreadyInclude){
crushPoints.push([arr[i][index][0],arr[i][index][1]])
++answer
}
}
}
}
++index
}
return answer
}
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค[JS] > 1074๋ฒ Z (0) | 2024.10.28 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > [PCCP ๊ธฐ์ถ๋ฌธ์ ] 2๋ฒ / ํผ์ฆ ๊ฒ์ ์ฑ๋ฆฐ์ง (1) | 2024.09.11 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ฑฐ์ค๋ฆ๋ (2) | 2024.09.06 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฆฌ์ฝ์ณ ๋ก๋ด (0) | 2024.08.25 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ดํธ ๋ณํ ( 2020 KAKAO BLIND RECRUITMENT ) (0) | 2024.08.24 |