Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฉ๋ฌธ ๊ธธ์ด ๋ณธ๋ฌธ
๐ ๋ฌธ์
๊ฒ์ ์บ๋ฆญํฐ๋ฅผ 4๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ํตํด ์์ง์ด๋ ค ํฉ๋๋ค. ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
U : ์์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
D : ์๋์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
L : ์ผ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
R : ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
์บ๋ฆญํฐ๋ ์ขํํ๋ฉด์ (0, 0) ์์น์์ ์์ํฉ๋๋ค. ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ ์ผ์ชฝ ์(-5, 5), ์ผ์ชฝ ์๋(-5, -5), ์ค๋ฅธ์ชฝ ์(5, 5), ์ค๋ฅธ์ชฝ ์๋(5, -5)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ด๋, ์ฐ๋ฆฌ๋ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ง๋๊ฐ ๊ธธ ์ค ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ์์์์ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์์ง์ธ ๊ธธ์ด๋ 9์ด์ง๋ง, ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ 7์ด ๋ฉ๋๋ค. (8, 9๋ฒ ๋ช
๋ น์ด์์ ์์ง์ธ ๊ธธ์ 2, 3๋ฒ ๋ช
๋ น์ด์์ ์ด๋ฏธ ๊ฑฐ์ณ ๊ฐ ๊ธธ์
๋๋ค)
๋จ, ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ฅผ ๋์ด๊ฐ๋ ๋ช ๋ น์ด๋ ๋ฌด์ํฉ๋๋ค.
๋ช ๋ น์ด๊ฐ ๋งค๊ฐ๋ณ์ dirs๋ก ์ฃผ์ด์ง ๋, ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐ก ์์ด๋์ด
์บ๋ฆญํฐ๊ฐ ๊ฑฐ์ณ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ด์ฐจ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๋ค.
๊ฒน์น๋ ๊ฒฝ๋ก๋ฅผ ์์ ๊ธฐ์ํด Set์ ์ฌ์ฉํด์ผํ๋ฏ๋ก ์ด์ฐจ์ ๋ฐฐ์ด๋ก ์ ์ฅํด๋๋ ๊ฒฝ๋ก๋ฅผ string์ผ๋ก ๋ฐ๊ฟ์ Set์ ์ ์ฅํ๋ค.
์ด๋, [0, 1] => [1, 2] ๊ฒฝ๋ก์ [1, 2] => [0, 1] ๊ฒฝ๋ก๋ ๊ฐ์ ๊ฒฝ๋ก์ด๋ฏ๋ก ์์๋ฅผ ๋ฐ๊ฟ์ ํ๋ฒ ๋ ์ ์ฅํด์ฃผ์ด์ผ ํ๋ค.
๋ง์ง๋ง์ผ๋ก Set์ ์ฌ์ด์ฆ๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋๋ฐ, ๋ฐ๋๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ๊ฒฝ๋ก๊น์ง ํฌํจ๋์๊ธฐ ๋๋ฌธ์ /2๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
โ๏ธ ํ์ด
function solution(dirs) {
let unique = new Set();
const dir = {'U' : 1, 'D' : -1, 'R' : 1, 'L' : -1};
let pass = [[0, 0]];
for(let i of dirs){
pl = pass.length;
if(i === 'U' || i === 'D') {
if(pass[pl-1][1] + dir[i] >= -5 && pass[pl-1][1] + dir[i] <= 5 ) {
pass.push([pass[pl-1][0], pass[pl-1][1] + dir[i]]);
}
}
else if(i === 'L' || i === 'R') {
if(pass[pl-1][0] + dir[i] >= -5 && pass[pl-1][0] + dir[i] <= 5) {
pass.push([pass[pl-1][0] + dir[i], pass[pl-1][1]]);
}
}
}
for(let i=0; i<pass.length-1; i++){
let route = [...pass[i], ...pass[i+1]].join('');
let verse = [...pass[i+1], ...pass[i]].join('');
if(!unique.has(route)) {
unique.add(route);
}
if(!unique.has(verse)) {
unique.add(verse);
}
}
return unique.size/2;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์คํฌํธ๋ฆฌ (0) | 2023.07.25 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2023.07.25 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ ๋ฐ๋จน๊ธฐ (0) | 2023.07.19 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋์ถฉ ๋ง๋ ์ํ (0) | 2023.07.18 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2023.07.17 |