https://school.programmers.co.kr/learn/courses/30/lessons/172928
나의 풀이
class Solution {
public int[] solution(String[] park, String[] routes) {
int[] answer = new int[2];
int x=0, y=0;
//S의 위치를 찾기
for(int i=0; i<park.length; i++){
if(park[i].contains("S")){
x=i;
for(int j=0; j<park[i].length(); j++){
if(park[i].charAt(j) == 'S'){
y=j;
}
}
}
}
for(int i=0; i<routes.length; i++){
String[] temp=routes[i].split(" ");
String dir = temp[0];
int cnt = Integer.parseInt(temp[1]);
int tempx=0, tempy=0;
int chk=0;
if(dir.equals("N")){
tempx= x-cnt;
tempy=y;
if(check(tempx, tempy, park, routes) == 1){
continue;
}
for(int k=x; k >= x-cnt ; k--){
if(park[k].charAt(y)=='X'){
chk=1;
break;
}
}
if(chk == 1 ){
continue;
}
}else if(dir.equals("S")){
tempx=x+cnt;
tempy=y;
if(check(tempx, tempy, park, routes) == 1){
continue;
}
for(int k=x; k <= x+cnt ; k++){
if(park[k].charAt(y)=='X'){
chk=1;
break;
}
}
if(chk == 1 ){
continue;
}
}else if(dir.equals("W")){
tempx=x;
tempy=y-cnt;
if(check(tempx, tempy, park, routes) == 1){
continue;
}
for(int k=y; k >= y-cnt ; k--){
if(park[x].charAt(k)=='X'){
chk=1;
break;
}
}
if(chk == 1 ){
continue;
}
}else if(dir.equals("E")){
tempx=x;
tempy=y+cnt;
if(check(tempx, tempy, park, routes) == 1){
continue;
}
for(int k=y; k <= y+cnt ; k++){
if(park[x].charAt(k)=='X'){
chk=1;
break;
}
}
if(chk == 1 ){
continue;
}
}
x=tempx;
y=tempy;
}
answer[0]=x;
answer[1]=y;
return answer;
}
public int check(int tempx, int tempy, String[] park, String[] routes){
if(tempx < 0 || tempy < 0 || tempy >= park[0].length() || tempx >= park.length){
return 1;
}
return 0;
}
}
문제유형
구현 문제인것 같다..
level1 치고는 어려움. 정답률 32%
'코테풀이' 카테고리의 다른 글
[프로그래머스] 달리기 경주 java 풀이(level1) (0) | 2023.04.20 |
---|---|
[프로그래머스] 바탕화면 정리 java 풀이(level1) (0) | 2023.04.20 |
[백준] BOJ - 2644 촌수계산 java (실버2) (0) | 2023.04.12 |
[백준] BOJ - 4963 섬의 개수 java (실버2) (0) | 2023.04.12 |
[백준] BOJ - 11724 연결 요소의 개수 java(실버2) (0) | 2023.04.12 |