인프런 커뮤니티 질문&답변
55번 문제의 코드 리뷰를 부탁드려도 될까요?ㅠㅠ
작성
·
229
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;
}퀴즈
선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?
인접한 두 요소를 비교하여 필요시 교환합니다.
정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.
현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.
배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.






너무 감사드립니다!