이것이 코딩 테스트다 - chapter04 - 예제4-1 상하좌우
문제
여행가 A는 NxN 크기의 정사각형 공간 위에 서 있다. 이 공간은 1X1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1,1)이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다. 여행가 A는 상,하,좌,우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다.
계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L,R,U,D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 다음과 같다.
- L: 왼쪽으로 한 칸 이동
- R: 오른쪽으로 한 칸 이동
- U: 위로 한 칸 이동
- D: 아래로 한 칸 이동
이때 여행가 A가 NxN 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를 들어 (1,1)의 위치에서 L 혹은 U를 만나면 무시된다. 계획서가 주어졌을 때 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.
생각
1. L R U D 를 통해 히동할 때에는 맵 밖으로 나가면 안되기때문에 각 방향에 맞는 조건을 준다.
코드
1. 내가 짠 코드
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
String[] strArr = bf.readLine().split(" ");
int x=1,y=1;
for(int i=0;i<strArr.length;i++){
String str = strArr[i];
if(str.equals("L")) {
if(y>1){
y --;
}
else{
continue;
}
}
if(str.equals("R")){
if(y<N){
y++;
}
else {
continue;
}
}
if(str.equals("U")) {
if(x>1) {
x--;
}
else{
continue;
}
}
if(str.equals("D")) {
if(x<N){
x++;
}
}
}
System.out.println(x+" "+y);
2. 정답코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
//이코테 - 구현 - 4-1예제
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
String[] plans = bf.readLine().split(" ");
int x = 1, y = 1;
// L, R, U, D에 따른 이동 방향
int[] dx = {0, 0, -1, 1};
int[] dy = {-1, 1, 0, 0};
char[] moveTypes = {'L', 'R', 'U', 'D'};
// 이동 계획을 하나씩 확인
for (int i = 0; i < plans.length; i++) {
char plan = plans[i].charAt(0);
// 이동 후 좌표 구하기
int nx = -1, ny = -1;
for (int j = 0; j < 4; j++) {
if (plan == moveTypes[j]) {
nx = x + dx[j];
ny = y + dy[j];
}
}
// 공간을 벗어나는 경우 무시
if (nx < 1 || ny < 1 || nx > n || ny > n) continue;
// 이동 수행
x = nx;
y = ny;
}
System.out.println(x + " " + y);
}
}
'알고리즘 > 구현' 카테고리의 다른 글
자바 이것이 코딩 테스트다 - chapter04 - 2 왕실의 나이트 (1) | 2024.10.13 |
---|---|
이것이 코딩 테스트다 - chapter04 - 예제4-2 시각 , 백준 자바 18312 시각 (1) | 2024.10.12 |
자바알고리즘 - 구현 - 자물쇠와 열쇠 (0) | 2024.02.02 |
자바알고리즘 - 구현 - 문자열 압축 (0) | 2024.01.29 |
자바알고리즘 - 구현 - 문자열 재정렬 (0) | 2024.01.22 |