본문 바로가기
코딩테스트 준비/백준

[백준/BOJ][C++] 24723번 녹색거탑

by 스테디코디스트 2023. 8. 30.
반응형

<문제 소개>


<소스 코드 1> - for문 사용

#include <iostream>
using namespace std;

int main()
{
	// 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;
	cin >> N;

	int output = 1;

	for (int i = 1; i <= N; i++)
	{
		output *= 2;
	}

	cout << output;

	return 0;
}

<소스 코드 2> - shift 연산 사용

#include <iostream>
using namespace std;

int main()
{
	// 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;
	cin >> N;

	cout << (1 << N);

	return 0;
}

<풀이과정>

1. 한 블록당 2개의 방향으로 내려갈 수 있다.

2. 블록이 한개라면 밑으로 내려오는 방법이 두가지이고, 두개라면 한개일 때 내려온 방향마다 2개의 방향으로 내려갈 수 있으므로 2x2가지 방법이 있다.

3. 이처럼 N번째 블록으로 내려오는 방법은 2를 N번 곱해서 구할 수 있다.

4. 따라서 2의 N제곱을 출력하면 된다.


<코멘트>

pow 함수를 썼더니 안되어서 그냥 for문으로 풀었다!

다른 분들 풀이를 보니 까먹고 있었던 shift연산을 이용하여 푼 풀이가 있어서 해당 풀이도 첨부했다!


<제출결과>

- pow 함수를 사용했을 때, 비쥬얼 스튜디오에서는 됐는데, 제출하니깐 맨 밑처럼 컴파일 에러가 뜨면서 틀리다고 나왔다.