Algorithm/문제 풀이 / / 2020. 3. 3. 13:52

[SWEA_8382 - JAVA] 방향전환

반응형

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWyNQrCahHcDFAVP

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이

방향을 상하 & 좌우 번갈아 가면서 해야하는 문제.
보는 순간 패턴이 있을것으로 보여 패턴을 찾아 손 쉽게 풀 수 있었던 문제.
예로 0,0 에서 1,1로 이동할 경우
오른쪽 한번 위로 한번으로 이동 가능.(대각선 이동으로 생각하면 편하다.)
풀이 과정은 2가지로 나누어진다.

  1. row의 차이와 col의 차이 중 더 작은것*2 만큼 이동( 즉, 대각선으로 이동가능한 모든 경우를 이동)
  2. 위의 차이중 (큰 값 - 작은 값)만큼의 이동을 해야 한다. ( 대각선 이동을 한 후, 남은 직선 이동)

2번의 경우 row 차이와 col차이의 차이는 아래와 같이 나누어진다.

  • 짝수인 경우 : 2 * 차이의 차이 
  • 홀수인 경우 : 2* 차이의 차이 -1

위의 패턴을 파악하는 것이 핵심.
1,2 번의 과정을 더하면 결과값.

 

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
32
33
34
35
36
37
38
39
 
 
public class Solution {
 
    static int x1, x2, y1, y2;
    static int[] dy = { -1100 }; // 상하좌우
    static int[] dx = { 00-11 };
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int tc = Integer.parseInt(br.readLine());
        for (int test = 1; test <= tc; test++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            x1 = Integer.parseInt(st.nextToken());
            y1 = Integer.parseInt(st.nextToken());
            x2 = Integer.parseInt(st.nextToken());
            y2 = Integer.parseInt(st.nextToken());
 
            // ================================ 입력 ================================
 
            int xSum = Math.abs(x1 - x2);
            int ySum = Math.abs(y1 - y2);
            int big = Math.max(xSum, ySum);
            int small = Math.min(xSum, ySum);
            int differ = big - small;
            int result = 0;
 
            result = 2 * small + 2 * differ - (differ % 2);
 
            System.out.println("#" + test + " " + result);
        }
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유