1138번: 한 줄로 서기
첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 �
www.acmicpc.net
키가 큰 사람이 앞에 몇명이 있는지에 따라 줄 서는 위치가 바뀌기 때문에 키가 가장 작은 사람부터 큰 사람 순으로 줄을 맞춰주면 된다.
#include <iostream>
using namespace std;
const int INF = 987654321;
int arr[10], res[10];
void Greedy(int N)
{
for (int i = 0; i < N; i++)
res[i] = INF;
for (int i = 0; i < N; i++)
{
int index = 0, here = 0;
while (index <= arr[i])
{
if (res[here] > i+1)
{
index++;
here++;
}
else
here++;
}
res[here-1] = i + 1;
}
}
int main(void)
{
int N;
cin >> N;
for (int i = 0; i < N; i++)
cin >> arr[i];
Greedy(N);
for (int i = 0; i < N; i++)
cout << res[i] << ' ';
return 0;
}

알고리즘 200일 프로젝트 - 116 day
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2437번: 저울 (0) | 2020.08.03 |
---|---|
백준 1783번: 병든 나이트 (0) | 2020.08.03 |
백준 2352번: 반도체 설계 (0) | 2020.07.30 |
백준 1080번: 행렬 (0) | 2020.07.29 |
백준 16637번: 괄호 추가하기 (0) | 2020.07.29 |