알고리즘

[Java] 알고리즘 Day4

Jaemin0604 2024. 7. 2. 16:38

구현

- 떠올린 아이디어를 코드로 구현하기

 

1. 완전 탐색

- 모든 경우의 수를 주저 없이 계산하는 해결 방법

 

2. 시뮬레이션

- 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 방법

 

예시 - 상하좌우 문제

좌표가 주어지고 이동방향이 주어졌을 때 도착할 지점의 좌표를 출력하는 문제

static int n;
static char[] plans;
    
public static void main(String[] args) throws Exception{
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    n = Integer.parseInt(br.readLine());
    StringTokenizer st = new StringTokenizer(br.readLine());
    int count = st.countTokens();
    plans = new char[count];

    for (int i = 0; i < count; i++) {
        plans[i] = st.nextToken().charAt(0);
    }

    int y = 1, x = 1;
    // L, R, U, D에 따른 이동 방향 
    // 이동 계획을 하나씩 확인
    for (int i = 0; i < count; i++) {

       int ny = y;
       int nx = x;
       switch(plans[i]) {
           case 'L' : nx = nx - 1; break;
           case 'R' : nx = nx + 1; break;
           case 'U' : ny = ny - 1; break;
           case 'D' : ny = ny + 1; break;
       }
       // 공간을 벗어나는 경우 무시 
       if (ny < 1 || nx < 1 || ny > n || nx > n) continue;
       // 이동 수행 
       y = ny;
       x = nx;
    }
    System.out.println(y + " " + x);
 }