인프런 커뮤니티 질문&답변

coli님의 프로필 이미지
coli

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

55. 기차운행 (스택 자료구조 응용)

55번 문제의 코드 리뷰를 부탁드려도 될까요?ㅠㅠ

작성

·

176

0

안녕하세요 선생님

다음 코드가 예제 코드도 정답이 나오고 채점파일을 돌렸을때 80점이 나왔는데, 왜 깎인건지 모르겠습니다ㅠㅠ 왜 틀린건지 알 수 있을까요?

#include<stdio.h>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
int main() {
//	freopen("input.txt", "rt", stdin);
	int n, i, next=1, flag=1;
	int a[40];
	stack<int> s;
	vector<char> out;
	scanf("%d", &n);
	for(i=0; i<n; i++) {
		scanf("%d", &a[i]);
	}
	for(i=0; i<n; i++) {
		if(!s.empty() && s.top() < a[i]) {
			flag=0;
			printf("%d\n", i);
			break;
		}		
		else {
			s.push(a[i]);
			out.push_back('P');
		}
		while(true) {
			if(s.empty() || s.top() != next) break;
			else {
				s.pop();
				out.push_back('O');
				next++;
			}
		}
	}
	if(flag == 0) printf("impossible\n");
	else {
		for(i=0; i<2*n; i++) {
			printf("%c", out[i]);
		}
	}
	return 0;
}

답변 1

1

19라인 printf("%d\n", i) 때문에 

in2 케이스가

 

 

2

impossible

 

요렇게 출력이 되어서 틀리는 것 같아요~

coli님의 프로필 이미지
coli
질문자

너무 감사드립니다!

coli님의 프로필 이미지
coli

작성한 질문수

질문하기