티스토리 뷰

 

 

 

문제

(0, 0)에서 시작하여 총 N번 움직여보려고 합니다. N번에 걸쳐 움직이려는 방향과 움직일 거리가 주어졌을 때, 최종 위치를 출력하는 프로그램을 작성해보세요.
단, dx, dy 테크닉을 활용하여 문제를 해결해주세요.

 

 

입력데이터 출력데이터
4
N 3
E 2
S 1
E 2
4 2

 

 

 

문제풀이

 

현 위치기준으로 다음 이동할 방향을 정의하기위해 dx, dy를 정의한다. 이후 입력받은 방향 N, E, W, S 에 맞게 dx, dy 인덱스와 매핑해주고, 주어진 방향에 맞춰 길이를 곱해 다음 이동할 위치좌표를 구해준다.

 

이 문제의 핵심은 dx, dy를 이용하여 코드 내 방향을 정의할수 있다는게 중요 포인트이다.

 

문제풀이 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
                            // w, S, E, N
        int[] dx = new int[]{-1, 0, 1, 0};
        int[] dy = new int[]{0, -1, 0, 1};

        int x = 0, y = 0; // 처음 위치
        

        for(int i =0; i < n ; i++){

            char dir = sc.next().charAt(0);
            int dis = sc.nextInt();
            
            // 
            if(dir == 'W'){
                x = x + (dx[0] * dis);
                y = y + (dy[0] * dis);
            }else if(dir == 'S'){
                x = x + (dx[1] * dis); 
                y = y + (dy[1] * dis);
            }else if(dir == 'E'){
                x = x + (dx[2] * dis); 
                y = y + (dy[2] * dis);
            }else if(dir == 'N'){
                x = x + (dx[3] * dis); 
                y = y + (dy[3] * dis);
            }

        }

        System.out.println(x + " " + y);
    }
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함