일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 협업도구
- 시스템프로그래밍
- 회고록
- 알고리즘
- SpringSecurity
- 트러블슈팅
- kafkaconsumer
- 코딩테스트
- 선택정렬
- AWS
- c
- 한이음
- 백준
- github
- Django
- git
- 코테
- 공부기록
- 자바
- testcode
- 기록
- jwt
- 문자열함수
- IT
- 자료구조
- 기술블로그
- java
- 문자열압축
- kafka
- codingtest
Archives
- Today
- Total
신뇽이 되어보자
[프로그래머스] 공원 산책 본문
728x90
내 코드
class Solution {
public int[] solution(String[] park, String[] routes) {
int[] answer = {};
int len = park[0].length(); // 가로 길이
int hlen = park.length; // 세로 길이
char[][] temp = new char[hlen][len];
int startn1 = 0;
int startn2 = 0;
//시작점을 찾기
for (int i = 0; i < hlen; i++) {
for (int j = 0; j < len; j++) {
temp[i][j] = park[i].charAt(j);
if (park[i].charAt(j) == 'S') {
//시작점 찾음
startn1 = i;
startn2 = j;
}
}
}
int newn1 = startn1;
int newn2 = startn2; // 이동 시뮬레이션
boolean isValid = true; // 이동 가능 여부
for (int k = 0; k < routes.length; k++) {
String[] parts = routes[k].split(" ");
if (parts.length < 2) continue; // 잘못된 입력 방지
char op = parts[0].charAt(0); // 방향
int nt = Integer.parseInt(parts[1]); // 이동 거리
int tempn1 = newn1, tempn2 = newn2;
isValid = true;
for (int o = 0; o < nt; o++) {
if (op == 'E') {
tempn2 += 1;
} else if (op == 'S') {
tempn1 += 1;
} else if (op == 'W') {
tempn2 -= 1;
} else if (op == 'N') {
tempn1 -= 1;
}
if (tempn1 < 0 || tempn1 >= hlen || tempn2 < 0 || tempn2 >= len || temp[tempn1][tempn2] == 'X') {
isValid = false;
break;
}
}
if (isValid) {
newn1 = tempn1;
newn2 = tempn2;
}
}
return new int[]{newn1, newn2};
}
}
1차원 배열을 2차원으로 만들고 시작점 좌표를 찾아서 이동시켜주는 방식으로 구현했다.
어려운 문제는 아니었지만 IDE없이 풀려니 좀 힘들었던 문제...
https://school.programmers.co.kr/learn/courses/30/lessons/172928
728x90
'CodingTest' 카테고리의 다른 글
[프로그래머스] 택배 상자 꺼내기 (0) | 2025.03.03 |
---|---|
[프로그래머스] 코드 처리하기(코딩 기초 트레이닝) (0) | 2025.02.28 |
[프로그래머스] 배열 만들기 2 (코딩 기초 트레이닝) (0) | 2025.02.28 |
[프로그래머스] 단어 변환(bfs) (1) | 2025.02.27 |
[프로그래머스] 게임 맵 최단 거리 구하기 (bfs) (0) | 2025.02.26 |