문제 확인하기
나의 풀이
🙅🏻♀️ 첫 번째 풀이
function solution(dirs) {
let arr = dirs.split("");
let start = [0, 0];
let result = [];
let notDuplArr = [];
for (let i = 0; i < dirs.length; i++) {
switch (dirs[i]) {
case "U":
start[1] = start[1] + 1;
break;
case "D":
start[1] = start[1] - 1;
break;
case "R":
start[0] = start[0] + 1;
break;
case "L":
start[0] = start[0] - 1;
break;
}
if (start[0] >= -5 && start[0] <= 5 && start[1] >= -5 && start[1] <= 5) {
result.push([...start]);
}
}
return [...new Set(result.map((el) => el.join("")))].length + 1;
}
모범 답안
👍 첫 번째 풀이
function solution(dirs) {
var ansObj = {};
var currentX = 0;
var currentY = 0;
for (var i = 0; i < dirs.length; i++) {
//첫 시작점을 위해 currentX, Y를 nextX, Y로 할당
var nextX = currentX;
var nextY = currentY;
var key = "key";
//방향성을 나타내야하는데 key를 만들 때 방향을 넣어서 더해줌
if (dirs[i] === "U") {
nextY = currentY + 1;
key = key + currentX + currentY + nextX + nextY;
}
if (dirs[i] === "R") {
nextX = currentX + 1;
key = key + currentX + currentY + nextX + nextY;
}
if (dirs[i] === "D") {
nextY = currentY - 1;
key = key + nextX + nextY + currentX + currentY;
}
if (dirs[i] === "L") {
nextX = currentX - 1;
key = key + nextX + nextY + currentX + currentY;
}
if (nextX < -5 || nextX > 5 || nextY < -5 || nextY > 5) {
//do nothing
} else {
// 선을 키로 잡아 1을 할당함
ansObj[key] = 1;
// 다음 점을 현재 점으로 옮겨주고 다시 스따뜨
currentX = nextX;
currentY = nextY;
}
}
return Object.keys(ansObj).length;
}
to be continued 😁