프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
int[] dx = {-1, 1, 0, 0};
int[] dy = {0, 0, -1, 1};
int[][] map;
int x, y, nx, ny, N, M;
boolean isBlocked;
void move(int dir, int dist){
isBlocked=false;
int i = 0;
nx = x;
ny = y;
while(i < dist){
nx += dx[dir];
ny += dy[dir];
if(nx < 0 || ny < 0 || nx >= N || ny >= M || map[nx][ny] == 'X') {
isBlocked = true;
return;
}
i++;
}
}
public int[] solution(String[] park, String[] routes) {
int[] answer = {};
N = park.length;
M = park[0].length();
map = new int[N][M];
x = 0;
y = 0;
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
if(park[i].charAt(j) == 'S'){
x = i;
y = j;
map[i][j] = 'O';
} else map[i][j] = park[i].charAt(j);
}
}
for(var k : routes){
StringTokenizer st = new StringTokenizer(k);
String c = st.nextToken();
int dist = Integer.parseInt(st.nextToken());
if(c.equals("N")) move(0, dist);
else if(c.equals("S")) move(1, dist);
else if(c.equals("W")) move(2, dist);
else move(3, dist);
if(!isBlocked){
x = nx;
y = ny;
}
}
answer= new int[2];
answer[0] = x;
answer[1] = y;
return answer;
}
}
'문제풀이 > 프로그래머스' 카테고리의 다른 글
리코쳇 로봇 (1) | 2024.04.05 |
---|---|
푸드 파이트 대회 Java (0) | 2024.02.28 |
가장 가까운 같은 글자 Java (0) | 2024.02.26 |
다단계 칫솔 판매 Java (0) | 2024.02.25 |
행렬 테두리 회전하기 Java (0) | 2024.02.23 |