728x90
SMALL
문제 이해
- 좌표문제로 좌표 범위는 -5 ~ 5까지로 해당 범위를 나가면 안된다.
- 문자열은 상하좌우를 뜻하는 LRUD가 있다.
- 문제의 핵심은 좌표범위를 벗어나지 않고 처음가는 길인곳의 길이를 구하는것이다.
- A -> B == B -> A 두개의 길은 같은길로 처리한다.
- 리스트에 좌표를 움직이기 전 좌표 + 움직인 후 좌표, 움직인 후 좌표 + 움직이기 전 좌표 로 두가지 경우를 둘다 넣어 문자열로 담아놨다.
- indexOf를 사용하여 리스트에 존재 하지 않으면 처음 가는길로 간주했다.
import java.util.*;
class Solution {
public int solution(String dirs) {
List<String> visit = new ArrayList();
int answer = 0;
int[] point = new int[2];
point[0] = 0;
point[1] = 0;
for(int i = 0; i<dirs.length(); i++){
int x = point[0];
int y = point[1];
if(dirs.charAt(i) == 'L'){
x -= 1;
}else if(dirs.charAt(i) == 'R'){
x += 1;
}else if(dirs.charAt(i) == 'U'){
y += 1;
}else if(dirs.charAt(i) == 'D'){
y -= 1;
}
if(x >= -5 && x <= 5 && y >= -5 && y <= 5){
String tmp = Integer.toString(point[0]+5) + Integer.toString(point[1]+5)
+ Integer.toString(x+5) + Integer.toString(y+5);
String tmp1 = Integer.toString(x+5) + Integer.toString(y+5)
+ Integer.toString(point[0]+5) + Integer.toString(point[1]+5);
if(visit.indexOf(tmp) == -1){
visit.add(tmp);
visit.add(tmp1);
answer++;
}
point[0] = x;
point[1] = y;
}
}
return answer;
}
}
728x90
LIST
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 스킬트리 - Java(자바) (0) | 2024.04.02 |
---|---|
[프로그래머스] 땅따먹기 - Java(자바) (0) | 2024.04.02 |
[프로그래머스] [3차] 압축 - Java(자바) (1) | 2024.03.29 |
[프로그래머스] k진수에서 소수 개수 구하기 - Java(자바) (0) | 2024.03.28 |
[프로그래머스] [1차]뉴스 클러스터링 - Java(자바) (0) | 2024.03.28 |