# 문제
과정을 N번 거친 후 점 몇 개를 저장해야 하는지 구하는 프로그램을 작성하시오.


# 풀이
규칙 찾기 문제!
바로 정답 소스코드를 확인해보자.
#include <iostream> using namespace std; int main(){ ios_base::sync_with_stdio(false); // 두 표준 입출력 동기화 해제 int dot = 2; int n; cin >> n; while(n--) dot = dot*2 - 1; cout << dot*dot; return 0; }
규칙을 찾을 때는 아래와 같이 생각했는데

우선 초기 상태는 점 2개 * 2
과정을 1번 거친 후에는 점 3개 * 3
과정을 2번 거친 후에는 점 5개 * 5
그림엔 없지만 과정을 3번 거친 후에는 점 9개 * 9
☞ 각 과정에서의 점의 개수를 제곱해주면 원하는 답을 얻을 수 있다는 걸 알았다.
while(n--) dot = dot*2 - 1; cout << dot*dot;
초기 점의 개수는 2로 잡고 단계를 진행하며 점의 개수를 계산 후
(여기서 점의 개수도 2개, 3개, 5개, 9개와 같이 규칙성 있게 늘어나므로 쉽게 계산이 가능하다.)
dot*dot을 출력해주면 끝!

2903번: 중앙 이동 알고리즘
상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.
www.acmicpc.net
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 1193번: 분수찾기 | C++ 풀이 (0) | 2023.06.03 |
---|---|
[백준] 2292번: 벌집 | C++ 풀이 (0) | 2023.06.02 |
[백준] 2720번: 세탁소 사장 동혁 | C++ 풀이 (0) | 2023.05.31 |
[백준] 11005번: 진법 변환 2 | C++ 풀이 (0) | 2023.05.30 |
[백준] 2745번: 진법 변환 | C++ 풀이 (0) | 2023.05.29 |