배운점
- 생각보다 너무 오래걸렸다....
생각했던 논리는 맞는데 코드 작성 실수 때문에 계속 오류가 났었다.
더 깔끔하게 풀 수 있을 것 같은데 다시 한 번 풀어보면 좋을 것 같다
import java.util.*; class Solution { public int[] solution(String[] park, String[] routes) { int[] startIdx = {0,0}; int h = park.length; int w = park[0].length(); for(int i = 0; i < park.length; i++){ if(park[i].indexOf('S') != -1){ startIdx[1] = park[i].indexOf('S'); startIdx[0] = i; break; } } for(int i = 0; i < routes.length; i++){ boolean flag = true; switch(routes[i].charAt(0)){ case 'E' : if(startIdx[1] + (routes[i].charAt(2) - '0') >= w) break; for(int j = 1; j <= (routes[i].charAt(2) - '0'); j++) { if(park[startIdx[0]].charAt(startIdx[1]+j) == 'X'){ flag = false; break; } } if(flag) startIdx[1] += (routes[i].charAt(2) - '0'); break; case 'W' : if(startIdx[1] - (routes[i].charAt(2) - '0') < 0) break; for(int j = 1; j <= (routes[i].charAt(2) - '0'); j++) { if(park[startIdx[0]].charAt(startIdx[1]-j) == 'X'){ flag = false; break; } } if(flag) startIdx[1] -= (routes[i].charAt(2) - '0'); break; case 'S' : if(startIdx[0] + (routes[i].charAt(2) - '0') >= h) break; for(int j = 1; j <= (routes[i].charAt(2) - '0'); j++) { if(park[startIdx[0]+j].charAt(startIdx[1]) == 'X'){ flag = false; break; } } if(flag) startIdx[0] += (routes[i].charAt(2) - '0'); break; case 'N': if(startIdx[0] - (routes[i].charAt(2) - '0') < 0) break; for(int j = 1; j <= (routes[i].charAt(2) - '0'); j++) { if(park[startIdx[0]-j].charAt(startIdx[1]) == 'X'){ flag = false; break; } } if(flag) startIdx[0] -= (routes[i].charAt(2) - '0'); break; } } return startIdx; } } |
'코딩테스트' 카테고리의 다른 글
[프로그래머스] Level1 추억 점수 JAVA (0) | 2023.10.11 |
---|---|
[프로그래머스] Level1 달리기 경주 JAVA (0) | 2023.10.11 |
[프로그래머스]2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 JAVA (0) | 2023.09.07 |
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 JAVA (0) | 2023.09.07 |