티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 2903번 중앙 이동 알고리즘

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

 

2903번: 중앙 이동 알고리즘

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

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

정사각형 각 모서리에 점 4개가 있을 때,

각 변의 중앙과 정사각형 중심에 점을 추가하는 과정 진행

과정을 N번 반복한 후 점이 몇 개인지 출력 (중복되는 점은 1개로)

 

2. 풀이

복잡한 문제 설명에 비해서 구현은 단순합니다.

규칙을 찾으려고 이것저것 고민하다가 점의 개수가 '제곱 수' 인 것을 확인했습니다.

(4, 9, 25, ...)

 

그래서 제곱을 걷어내고 2, 3, 5, 9 의 규칙을 찾아보았는데

직전 수 + (직전 수 - 1) 라는 것을 쉽게 알 수 있었습니다.

 

2개가 있으면 사이에 1개가 추가되어 3개가 되고,

3개가 있으면 사이사이에 총 2개가 추가되어 5개가 됩니다.

 

나머지 풀이는 아래 코드 참고하시면 됩니다.

 

3. 코드

#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
2903_중앙 이동 알고리즘
1112kb	0ms
*/
#include <cstdio>

int main() {
#ifdef _WIN32
	freopen("input.txt", "r", stdin);
#endif // _WIN32
	int n;
	scanf("%d", &n);

	int cnt = 2;
	while (n--) cnt += (cnt - 1);

	printf("%d\n", cnt * cnt);
	return 0;
}
728x90
반응형
댓글