어제에 이어 자바 연습문제를 풀어보았다.
사실상 map을 구성할 필요가 없었지만 구하는게 더 편해보여서 방향을 그쪽으로 잡았었는데
익숙치 못한 구문이라 그런지 힘들어서 set쪽으로 가닥을 돌렸다.
공부하면서 set구문도 모자람을 느꼈고, 특히나 향상된 for문에서 너무 부족함을 느꼈다.
내일은 향상된 for문을 위주로 공부해 봐야 할 것 같다.
오늘 배운것은 split 이다.
만약
String i = " 1 3 5 7 9";
일때
String[] arr = i.split(" ");
로 띄어쓰기 를 기점으로 arr에 배열로 저장할 수 있는 기능이었다.
또한 문자열을 정수형으로 변환하는
Integer.parseInt()기능을 다시한번 상기할 수 있었다.
이 기능을 사용하면 str -> char -> int의 과정을 생략할수있어 좋았다.
package selfTest.kh.basic;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class ParkWark {
public static void main(String[] args) {
String[] park = {"OSO", "OOO", "OXO", "OOO"};
String[] routes = {"E 2", "S 3", "W 1"};
int H = park.length;
int W = park[0].length();
int[] SP = {0,0};// 좌표값 초기화
Set<Character> XP = new HashSet<>(Arrays.asList('X', 'S'));
for (String row : park) {
for (char c : row.toCharArray()) {
XP.add(c);
}
}
for (int row = 0; row < H; row++) {
for (int col = 0; col < W; col++) {
if(park[row].charAt(col) == 'S') {
SP[0] = row;
SP[1] = col;
break;
}
}
}
for (String route: routes) {
String[] parts = route.split(" ");
char vector = parts[0].charAt(0);
int distance = Integer.parseInt(parts[1]);
int newRow = SP[0];
int newCol = SP[1];
if (vector == 'N') {
newRow -= distance;
} else if (vector == 'S') {
newRow += distance;
} else if (vector == 'W') {
newCol -= distance;
} else if (vector == 'E') {
newCol += distance;
}
if ( newRow >= 0 && newRow < H && newCol >= 0 && newCol < W) {
SP[0] = newRow;
SP[1] = newCol;
}
}
SP;
}
오늘은 여기까지.