본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 2903번: 중앙 이동 알고리즘 [Java]

문제: https://www.acmicpc.net/problem/2903

 

2903번: 중앙 이동 알고리즘

상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		long answer = 4;
		while(T-- > 0)
			answer = answer * 4 - ((int)Math.sqrt(answer) * 2 - 1) * 2 -1;
		System.out.println(answer);
	}
}

2. 설명

초기 상태에서 1번 그림을 비교해보면 초기 상태에서 4개를 하나의 정사각형으로 만든 것으로 보이며 마찬가지로 1번 그림과 2번 그림을 비교하면 1번 그림을 4번 이어 붙이면 2번 그림 상태가 된다.

이 점을 이용하여 중복되는 것은 2변의 점은 2번씩 겹치며 꼭짓점은 4번 겹치기에 코드에 적힌 식이 도출된다.