Java/백준알고리즘

[Java] 백준알고리즘 #2903 중앙 이동 알고리즘

Sehyeok20 2023. 10. 5. 19:13
반응형

백준알고리즘 #2903 중앙 이동 알고리즘
백준알고리즘 #2903 중앙 이동 알고리즘

 

정사각형이 중복 되니 마니 이래저래 말이 많지만 결국에는 점의 수를 구하는 문제.

규칙을 보면 

초기상태 4

1번시행 9 

2번시행 25

...

인 것을 알 수 있다. 이것은 정사각형의 변의 중앙에 점을 찍는 방식이므로 한 변에 있는 점을 안다면 모든 점을 알 수 있다.

한 변의 점을 기준으로

초기상태 2

1번시행 3

2번시행 5

...

이 된다. 이것을 공식화한다면

초기상태 2

1번시행 : 2 + 1 = 3

2번시행 : 3 + 2 = 5

3번시행 : 5 + 4 = 9

...

n번시행 : (n - 1번째 시행값) + (n - 1번째 실행값 - 1)  이 됨을 알 수 있다.

이제 n번 시행 후 나온 큰 정사각형에서 한 변에 있는 점의 개수를 알았으니, 이를 제곱해주면 모든 점의 수를 구할 수 있다.

 

이를 코드로 나타내면 다음과 같다.

import java.util.Scanner;

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

        for (int i = 0; i < n; i++) {
            dot += (dot - 1);
        }
        System.out.println(dot * dot);

        sc.close();
    }
}

 

초기상태가 정사각형 1개이므로 한 변에 있는 점의 수는 2개.

n번만큼 반복하면서 dot변수에 (한변에 있는 점의 수 - 1) 을 차례로 더해준다.

이를 제곱하여 출력하면 완성.

반응형