- 회고
73. 공원산책 : https://school.programmers.co.kr/learn/courses/30/lessons/172928
class Solution {
public int[] solution(String[] park, String[] routes) {
int[] answer = new int[2];
// 시작점 찾기
for (int i = 0; i < park.length; i++) {
if (park[i].contains("S")) {
answer[0] = i;
answer[1] = park[i].indexOf("S");
break;
}
}
// routes 확인
for (String r : routes) {
String[] rArr = r.split(" ");
String dir = rArr[0];
int dis = Integer.parseInt(rArr[1]);
boolean conX = true;
switch (dir) {
case "E":
if (answer[1] + dis < park[0].length()) {
if (!park[answer[0]].substring(answer[1] + 1, answer[1] + dis + 1).contains("X")) {
answer[1] += dis;
}
}
break;
case "W":
if (answer[1] - dis >= 0) {
if (!park[answer[0]].substring(answer[1] - dis, answer[1]).contains("X")) {
answer[1] -= dis;
}
}
break;
case "S":
if (answer[0] + dis < park.length) {
for (int i = answer[0] + 1; i <= answer[0] + dis; i++) {
if (park[i].charAt(answer[1]) == 'X') {
conX = false;
break;
}
}
if (conX) {
answer[0] += dis;
}
}
break;
case "N":
if (answer[0] - dis >= 0) {
for (int i = answer[0] - 1; i >= answer[0] - dis; i--) {
if (park[i].charAt(answer[1]) == 'X') {
conX = false;
break;
}
}
if (conX) {
answer[0] -= dis;
}
}
break;
}
}
return answer;
}
}
- 풀이 과정 :
- for문을 통해 park의 각 요소를 돌며 S를 포함한 문자열이 있는지 확인
- S가 있으면 해당 문자열에서 S의 인덱스를 찾아 시작지점으로 설정
- routes를 돌며 split을 통해 방향과 거리를 나누고
- 방향에 따른 case문 작성
- case문 작성 시 가는 길에 X의 포함 여부와, 공원의 범위를 초과하는 경우를 조건문으로 걸러냄
- 진행
일자 | 완료 번호 |
24.07.16 ~ 24.07.31 | 1~63 |
24.08.01 | 64 |
24.08.02 | 65 |
24.08.05 | 66 |
24.08.06 | 67 |
24.08.07 | 68 |
24.08.08 | 69 |
24.08.09 | 70 |
24.08.12 | 71 |
24.08.13 | 72 |
24.08.14 | 73 |
'Java & Spring > 코딩테스트' 카테고리의 다른 글
26일차 - 알고리즘 코드카타 (0) | 2024.08.20 |
---|---|
25일차 - 알고리즘 코드카타 (0) | 2024.08.19 |
22일차 - 알고리즘 코드카타 (0) | 2024.08.13 |
21일차 - 알고리즘 코드카타 (0) | 2024.08.12 |
20일차 - 알고리즘 코드카타 (0) | 2024.08.09 |