https://school.programmers.co.kr/learn/courses/30/lessons/49994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
가장 중요한 것은 0,0 -> 1,0 과 1,0 -> 0,0 이 경로는 다르지만.. 이동한 길은 동일하다는 것입니다.
그리고는 별거 없습니다. 배열을 이용해 방문을 표시할까 하다가 머리가 아파서 그냥 list로 비교했습니다.
import java.util.*;
class Solution {
public int solution(String dirs) {
int answer = 0, x = 0, y = 0, preX = 0, preY = 0;
List<String> visited = new ArrayList<>();
visited.add("0000");
for (int i = 0; i < dirs.length(); i++) {
preX = x; preY = y;
switch (dirs.charAt(i)) {
case 'L':
if (x > -5) x--;
break;
case 'R':
if (x < 5) x++;
break;
case 'U':
if (y < 5) y++;
break;
case 'D':
if (y > -5) y--;
break;
}
if (!visited.contains(preX+""+preY+""+x+""+y+"") && !visited.contains(x+""+y+""+preX+""+preY+"") && !(preX+""+preY+"").equals(x+""+y+"")) {
visited.add(preX+""+preY+""+x+""+y+""); answer++;
}
}
return answer;
}
}
경로가 같냐를 비교하기 위해서 if문이 좀 더럽습니다.
[0,0] -> [1,0] 으로 간다고 생각해보면 편합니다.
그리고 x, y 값이 변하지 않았다면 당연히 움직이지 않았겠죠.. 그 부분도 추가했습니다.
대망의 테스트.
는 정말 효율이 구립니다~ 통과 못 하는줄~
안녕히계세요뿅
'PS' 카테고리의 다른 글
[프로그래머스] 달리기 경주 자바 풀이 (1) | 2023.04.15 |
---|---|
[프로그래머스] 베스트앨범 자바 풀이 (0) | 2023.04.06 |
[프로그래머스] 오픈채팅방 자바 풀이 (0) | 2023.03.25 |
[프로그래머스] n진수 게임 자바 풀이 (0) | 2023.03.23 |
[프로그래머스] 200솔 완성 (0) | 2023.03.15 |