728x90
문제
https://www.acmicpc.net/problem/1138
문제 해결
1. 입력받을 때부터 정렬된 상태이다.
2. 입력받고 그 해당하는 노드가 앞에 몇 명 있는지 확인한다.
3. 만약 앞에 2 사람이 있으면 두 칸 뒤에 앉으면 된다.
4. 하지만 두 칸 뒤에 사람이 이미 있으면 그 다음칸으로 가서 다시 확인한다.
5. 2~3단계를 반복한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <iostream>
using namespace std;
int main(void){
int N,left;
int ary[11] = {0,}; //0은 빈자리로 한다.
cin >> N;
for(int i = 0;i<N;i++){
cin >> left;
for(int j = 0;j<N;j++){
if(left == 0&&ary[j] == 0){ //만약 자기앞에 아무도 없고 빈자리라면
ary[j] = i+1; //착석한다.
break;
}
//만약 아직 자기앞에 사람이 더 있으면 한칸씩 뒤로 가주면서 left가 0이 될떄까지 계속 뒤로 가준다.
else if(ary[j] == 0){left--;}
}
}
for(int i = 0;i<N;i++){
cout << ary[i] << " ";
}
}
|
cs |
728x90