SWEA

swea 1493 [D3] 수의 새로운 연산 JAVA

녁이 2023. 11. 24. 02:40
728x90
반응형

풀이 :

배열 X, 규칙을 찾아야 함. for문을 잘 사용해야 함

 


Code

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

        for (int tc = 1; tc <= T; tc++) {

            int p = sc.nextInt();
            int q = sc.nextInt();

            int[] coordiP = getCoordi(p);
            int[] coordiQ = getCoordi(q);

            // 좌표 연산
            int[] newCoordi = {coordiP[0] + coordiQ[0], coordiP[1] + coordiQ[1]};

            // 좌표를 통해 값 구하기
            int result = getValue(newCoordi);

            System.out.println("#" + tc + " " + result);
        }
    }

    // 값을 받아서, 좌표 구하기
    private static int[] getCoordi(int value) {
        int count = 1;
        for (int i = 1;; i++) { // i는 1씩 계속 증가
            for (int x = 1, y = i; x <= i; x++, y--) {  // (1,1) -> (1,2) -> (2,1) -> (1,3) ->... 좌표마다 count로 ++하면서 값을 넣는 식
                if (count == value) {
                    return new int[]{x, y}; // 좌표 구해서 배열에 넣기
                }
                count++;
            }
        }
    }

    // 좌표를 받아서, 값 구하기
    private static int getValue(int[] coordi) {
        int count = 1;
        for (int i = 1;; i++) {
            for (int x = 1, y = i; x <= i; x++, y--) {
                if (x == coordi[0] && y == coordi[1]) {
                    return count;
                }
                count++;
            }
        }
    }
}

 

728x90
반응형