1. 문제
제한사항
- dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자는 주어지지 않습니다.
- dirs의 길이는 500 이하의 자연수입니다.
입출력 예
dirs | answer |
"ULURRDLLU" | 7 |
"LULLLLLLU" | 7 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
문제의 예시와 같습니다.
2. 정답 풀이
풀이 전략
- Set 객체 사용
- 같은 길에서 방향만 다른 경우를 고려
- [1,0]에서 'L'이 입력으로 들어온 경우 [0,0] : '1000' hash에 추가
- [0,0]에서 'R'이 입력으로 들어온 경우 [1,0] : '0010' hash에 추가
function solution(dirs) {
const MAX = 5;
const directions = {
'U': [0,-1],
'D': [0,1],
'L': [-1,0],
'R': [1,0]
}
let cur = [0,0];
const hash = new Set(); // 중복 추가 방지를 위해 Set 객체 사용
dirs.split('').forEach(dir => {
const dx = cur[0] + directions[dir][0];
const dy = cur[1] + directions[dir][1];
// 이동 좌표가 범위 안에 있는지 확인
const canMove = dx <= MAX && dy <=MAX && dx >= -MAX && dy >= -MAX;
if (canMove) {
// 같은 길, 방향만 다른 경우 고려해 두 경우 모두 hash에 추가
hash.add(''+cur[0]+cur[1]+dx+dy);
hash.add(''+dx+dy+cur[0]+cur[1]);
cur = [dx, dy];
}
})
return hash.size / 2;
}
이전에 많이 풀어봤던 유형이라 쉽게 로직을 생각해 낸 것 같다. 문제를 많이 풀어서 여러 유형을 익혀야겠다🔥🔥
'코딩 테스트 > 프로그래머스(LV2)' 카테고리의 다른 글
[프로그래머스] 뒤에 있는 큰 수 찾기 (LV2 - JavaScript) (3) | 2024.12.01 |
---|---|
[프로그래머스] k진수에서 소수 개수 구하기 (LV2 - JavaScript) (1) | 2024.11.30 |
[프로그래머스] [3차] n진수 게임 (LV2 - JavaScript) (2) | 2024.11.28 |
[프로그래머스] [3차] 압축 (LV2 - JavaScript) (1) | 2024.11.25 |
[프로그래머스] 모음사전 (LV2 - JavaScript) (1) | 2024.11.21 |