[문제 링크]

 

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

+ Recent posts