방명록
- [레벨1][자바스크립트] 공원 산책2023년 04월 18일 16시 35분 57초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
https://school.programmers.co.kr/learn/courses/30/lessons/172928
장애물을 만나면 이동한 위치를 롤백해야 한다. 이러한 로직을 처리함에 있어 func 함수를 정의하여 문제를 해결했다. for문 순회 시 인덱스와 값을 함께 사용하기 위해 for in 문법을 이용해고, 이중 배열 요소 비교-장애물을 만났을 때 롤백 처리-를 위해 이중 배열의 요소를 문자열로 변경(JSON.stringify) 후 비교하였다.
function solution(park, routes) { const start = []; x = []; wSize = park[0].length; hSize = park.length; // 인덱스와 값을 함께 이용하기 위해 for in 이용 for (let i in park) { const str = [...park[i]]; for (let j in str) { if (str[j] === "S") { start.push(parseInt(i)); start.push(parseInt(j)); } if (str[j] === "X") { x.push([parseInt(i), parseInt(j)]); } } } const move = (route) => { temp = [...start]; route[1] = parseInt(route[1]); for (let i = 0; i < route[1]; i++) { switch (route[0]) { case "W": temp[1]--; break; case "E": temp[1]++; break; case "N": temp[0]--; break; case "S": temp[0]++; break; } if (temp[0] < 0 || temp[0] >= hSize) { return; } if (temp[1] < 0 || temp[1] >= wSize) { return; } // 이중 배열 요소 비교를 위해 안쪽 배열을 문자열로 변경하여 비교함 if (x.map((arr) => JSON.stringify(arr)).includes(JSON.stringify(temp))) { return; } } return temp; }; for (let route of routes) { r = route.split(" "); const coord = move(r); if (coord) { start.splice(0, 2, coord[0], coord[1]); } } return start; }
728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[레벨2] [3차] n진수 게임 (0) 2023.07.15 [레벨2] 멀리 뛰기 (0) 2023.05.22 [레벨1][파이썬] 공원 산책 (0) 2023.04.17 [알고리즘][파이썬] 백준_10866_덱 (0) 2022.01.09 [알고리즘][파이썬] 백준_1158_요세푸스 문제 (0) 2022.01.05 다음글이 없습니다.이전글이 없습니다.댓글