[til 019_002] self test

김동현·2023년 8월 9일
0

til

목록 보기
33/53

어제에 이어 자바 연습문제를 풀어보았다.

사실상 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;
	
}

오늘은 여기까지.

0개의 댓글

관련 채용 정보