본문 바로가기

# 프로그래밍 개발/04. 알고리즘 문제풀이

백준 알고리즘 9546번 [3000번 버스] 문제 풀이 코드 공개

반응형

문제

n명의 승객을 태우고 있는 3000번 버스는 강화에서부터 김포를 지나 신촌까지 가는 좌석버스이다. 3000번 버스는 버스 정류장마다 문을 연다. 그리고 정류장마다 타고 있는 승객의 수의 정확히 절반과 반 명(0.5명)의 승객이 내린다. 총 k개의 정류장에서 승객이 내렸고 마지막 정류장에서 승객이 없었으며 누구도 다치지 않았다면 맨 처음 타고있던 승객은 몇명인가.

입력

첫 번째 줄은 테스트 케이스의 수를 입력받는다. 각각의 테스트 케이스에는 정류장의 수 k를 입력받는다. 1 ≤ k ≤ 30.

출력

각각의 테스트 케이스는 한 줄에 처음 버스에 타고있던 승객의 수를 출력한다.

출처

ICPC > Regionals > Europe > Central European Regional Contest > CERC 2013 L번

알고리즘 분류

솔직히 왜 틀렸는지 잘 모르겠는 수준의 문제인데 

5년전의 나는 틀린 것 같다. 

아래는 오류가 발생한 코드이다. 

#include<cstdio>
#include<cmath>
int main(){
	int tc,x;
	scanf("%d",&tc);
	while(tc--){
		scanf("%d",&x);
		float res = pow(2.0,x)-1;
		printf("%.f\n",res);
	}
}

아래는 정답코드이다. 

#include<cstdio>
#include<cmath>
int main(){
	int tc,x;
	scanf("%d",&tc);
	while(tc--){
		scanf("%d",&x);
		double res = pow(2.0,x)-1;
		printf("%.f\n",res);
	}
}

역시나 자료형의 범위에 의해서 틀린 판정을 받은 것은 너무나도 아쉽다 

코딩 테스트를 준비하시는 분들은 

문제를 꼼꼼히 읽고, 문제가 원하는 범위 내에서 코드가 동작이 가능한지 혹은 동작이 불가능한지 판단 후 

제출해보는 연습을 꼭 해보시길 바라겠습니다. 

 

이상 다이어릿 이었습니다. 

반응형