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
- 캐시라인
- MVCC
- lv3
- 표현 가능한 이진트리
- 멀티 프로세스
- 세그멘테이션
- 멀티 코어
- 멀티 스레드
- java
- 최장증가부분수열
- lis
- multi-thread
- Parametric Search
- 틱택토
- 함께 자라기
- MESI
- synchronized
- 이펙티브자바
- 이분탐색
- try-catch-finally
- OS
- 자바
- try-with-resource
- 방문길이
- 프로그래머스
- 실행과정
- 메모리계층구조
- 트랜잭션
- 아키텍처 개선
- Runtime data area
Archives
- Today
- Total
siino's 개발톡
[프로그래머스] 방문길이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/49994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주어진 명령어가 주어졌을 때, 명령어대로 진행한 후에 처음 가본 길의 개수를 구하는 문제입니다.
처음가본 "길"에 집중하여 문제를 풀어야 합니다.
단지 노드를 방문했다고 해서 해당노드를 방문처리하고 끝내서는 안됩니다.
길에 초점을 맞춰서 (x1,y1) -> (x2, y2)의 노드로 진행하였다면
방문했던 길을 저장하는 HashSet에 (x1, y1, x2, y2)를 저장하는 방식으로 구현했습니다.
단,
(x1,y1) -> (x2, y2)과
(x2,y2) -> (x1, y1)
이 두가지 길은 결국 같은 길입니다. (길은 방향성이 없기 때문에)
따라서 한번 가본 길을 저장할 때 HashSet에 이 두개의 길을 다 저장한 후에 마지막 답을 구할때 /2를 해주는 식으로 구현하였습니다.
또, 주의할 점으로는 int[]의 equals 비교는 override를 할 수 없어서 감싸는 class를 또 만들어주어야하지만 List<Integer>는 equals비교가 요소(원소)비교로 이미 오버라이딩 되어 있기 때문에 간편하게 사용할 수 있습니다.
class Solution {
static int[][] map = new int[11][11];
static int[] dx = new int[]{-1, 1, 0, 0};
static int[] dy = new int[]{0, 0, 1, -1};
public int solution(String dirs) {
int x = 5, y = 5;
Set<List<Integer>> set = new HashSet<>();
for(int i = 0; i<dirs.length(); i++){
char c = dirs.charAt(i);
int nx = 0, ny = 0;
switch(c){
case 'U':
nx = x + dx[0];
ny = y + dy[0];
break;
case 'D':
nx = x + dx[1];
ny = y + dy[1];
break;
case 'R':
nx = x + dx[2];
ny = y + dy[2];
break;
case 'L':
nx = x + dx[3];
ny = y + dy[3];
break;
}
if(nx < 0 || ny < 0 || nx >= 11 || ny>= 11) continue;
set.add(Arrays.asList(x, y, nx, ny));
set.add(Arrays.asList(nx, ny, x, y));
x = nx;
y = ny;
}
return set.size() / 2;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
달리기 경주 - 코틀린 (1) | 2024.02.28 |
---|---|
[프로그래머스] 혼자서 하는 틱택토 (0) | 2024.02.14 |
[프로그래머스] 입국심사 (1) | 2024.02.07 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT[1차] 프렌즈4블록 (1) | 2024.01.26 |
[2023 KAKAO BLIND RECRUITMENT] 1, 2, 3 떨어뜨리기 - java (1) | 2024.01.03 |