Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 개발브로그
- queue
- React
- frontend
- 알고리즘
- 좌표이동
- 42587
- javascript
- DP
- pymodbus
- InfluxDB
- javascirpt
- Two Pointer
- typescript
- 스택/큐
- modbus
- 코딩테스트
- 1844
- Algorithm
- algorhtim
- data platform
- 완전탐색
- python
- 프로그래머스
- summerwintercoding
- 파이썬
- Stack
- configfile
- set활용
- dfs
Archives
- Today
- Total
DM Log
[Summer/Winter Coding(~2018)] 방문 길이 - Python / JavaScript 본문
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/49994
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
- (0,0)에서 시작하여 명령어("U", "D", "R", "L")에 따라 이동
- 좌표 범위는 -5 ~ 5이며, 범위를 벗어난 이동은 무시
- 동일한 길은 한 번만 방문한 것으로 처리
[문제 해결 방안]
- 현재 좌표에서 이동할 좌표를 계산
- 이동 가능하면 (출발지, 도착지) 쌍을 저장
- 중복 제거를 위해 (a, b)와 (b, a)를 정렬된 튜플 또는 문자열로 저장
- Python은 set, JavaScript는 Set을 사용해 중복 제거
[문제 해결 코드 - python]
def move_dir(y, x, directs):
diry, dirx = directs
dy = y + diry
dx = x + dirx
if dy < -5 or dy > 5 or dx < -5 or dx > 5:
return y, x
return dy, dx
def solution(dirs):
direction_map = {
"U": (1, 0),
"D": (-1, 0),
"R": (0, 1),
"L": (0, -1)
}
y, x = 0, 0
checked = set()
for move in dirs:
dy, dx = move_dir(y, x, direction_map[move])
if (dy, dx) == (y, x):
continue
edge = tuple(sorted([(y, x), (dy, dx)]))
checked.add(edge)
y, x = dy, dx
return len(checked)
[문제 해결 코드 - javascript]
<기본 큐 방식>
function moveDir(y, x, [dy, dx]) {
const ny = y + dy;
const nx = x + dx;
if (ny < -5 || ny > 5 || nx < -5 || nx > 5) {
return [y, x];
}
return [ny, nx];
}
function solution(dirs) {
const directDict = { "U": [1, 0], "D": [-1, 0], "R": [0, 1], "L": [0, -1] };
let y = 0;
let x = 0;
let checked = new Set();
for (let dir of dirs) {
const [ny, nx] = moveDir(y, x, directDict[dir]);
if (ny === y && nx === x) continue;
const edge = [[y, x], [ny, nx]]
.sort()
.map(p => p.join(','))
.join("|");
checked.add(edge);
y = ny;
x = nx;
}
return checked.size;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[스택/큐] 다리를 지나는 트럭 - Python / JavaScript (3) | 2025.08.10 |
---|---|
[DP] 땅따먹기 - Python (3) | 2025.08.03 |
[완전탐색] 모음사전 - Python / JavaScript (0) | 2025.07.19 |
[DFS/BFS] 타겟 넘버 - Python / Javascript (1) | 2025.07.15 |
[BFS] 게임 맵 최단거리 - Python (0) | 2025.07.14 |