반응형
2903_중앙 이동 알고리즘
링크
https://www.acmicpc.net/problem/2903
풀이
너무 깊게 생각하지 말고 점이 일정한 간격을 두고 채워져 있기 때문에 점을 이용해서 면적을 구한다고 생각해봅시다. 사각형들은 정사각형이기 때문에 가로와 세로가 같습니다.
첫 번째 사각형의 가로의 점은 2개가 있습니다. 넓이를 구한다고 생각하고 제곱을 하면 4가 되죠.
두 번째 사각형의 가로의 점은 3개가 있습니다. 넓이를 구한다고 생각하고 제곱을 하면 9가 되죠.
세 번째 사각형의 가로의 점은 5개가 있습니다. 넓이를 구한다고 생각하고 제곱을 하면 25가 되죠.
가로의 점은 현재 점 사이사이에 점이 추가되기 때문에 현재 점 - 1만큼 추가됩니다.
즉, 현재 가로의 점이 cnt라면 다음 가로의 점은 2*cnt - 1이죠.
그리고 초기 cnt를 2라고 두고 반복문을 이용해서 cnt+=cnt-1 을 해준 후 cnt의 제곱을 출력하면 답이 됩니다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//2903_중앙 이동 알고리즘 #include <cstdio> using namespace std;
int n, cnt = 2;
int main() { scanf("%d", &n);
for (int i = 0; i < n; ++i) cnt += cnt - 1;
printf("%d\n", cnt*cnt);
return 0; } |
반응형
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 1267 핸드폰 요금 (0) | 2018.11.22 |
---|---|
[백준 BOJ] 1712 손익분기점 (0) | 2018.11.21 |
[백준 BOJ] 1919 애너그램 만들기 (0) | 2018.11.19 |
[백준 BOJ][stack] 3015 오아시스 재결합 (0) | 2018.11.18 |
[백준 BOJ][stack] 6549 히스토그램에서 가장 큰 직사각형 (0) | 2018.11.17 |