Algorithm/java
[Java][프로그래머스] 방문 길이
현이승
2023. 5. 8. 16:00
import java.util.*;
class Solution {
public int solution(String dirs) {
int answer = 0;
Set<String> set = new HashSet<String>();
String from = "0 0";
for(int i=0; i<dirs.length(); i++){
String target = dirs.split("")[i];
int x = Integer.parseInt(from.split(" ")[0]);
int y = Integer.parseInt(from.split(" ")[1]);
if(target.equals("U")){
y += 1;
}
else if(target.equals("L")){
x -= 1;
}
else if(target.equals("D")){
y -= 1;
}
else if(target.equals("R")){
x += 1;
}
if(x > 5 || y > 5 || x < -5 || y < -5) continue;
String to = Integer.toString(x) + " " +Integer.toString(y);
set.add(from+" "+to);
set.add(to+" "+from);
from = to;
}
answer = set.size()/2;
return answer;
}
}
HashSet을 사용하여 중복을 제거하는 방식으로 진행하였다.
현재 위치를 from 변수 0 0으로 선언하고
현재 위치로부터 조건에 맞는 좌표로 x y를 이동시킨뒤 to 변수에 저장한다.
좌표는 5를 넘으면 안되므로 조건문을 통하여 해결한다.
여기서 중요한점은 0,0에서 0,1로 이동하는 것과 0,1에서 0,0으로 이동하는 것은 동일한 길을 걷는 것이므로
두 경우 모두 set에 추가한다.
그 후 from변수를 to로 바꿔주며 현재위치를 다시 설정한다.
실제 지나오지 않은 길도 추가해주었으므로 set.size()/2를 통해 해결한다.