본문 바로가기

ALGORITHM/OTHER

11582 치킨 TOP N

https://www.acmicpc.net/problem/11582

 

11582번: 치킨 TOP N

인하대 주변 치킨칩의 맛의 정도를 측정해 수치화하는 동아리 C.T.P(Chicken Tastes Perfect)의 회장 민호는 치킨집의 맛의 수치를 감소하지 않는 순으로 정렬을 하고 싶었다. 하지만 치킨집이 너무 많

www.acmicpc.net

쉬운 문제인데 기본적인 sort 함수 범위에서 막혀서 당황했던 문제

일반적으로 vector에서 sort함수를 사용할 때 ,

sort(v.begin(), v.end());

이렇게만 사용했더니 범위에 대한 것은 생각지도 않고있었다.

https://www.cplusplus.com/reference/algorithm/sort/?kw=sort 

 

sort - C++ Reference

custom (2)template void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

www.cplusplus.com

sort 함수 범위는 [first,last) 에서만 적용되니 범위만 바꿔줘서 해결

 

#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>

#define initialize(x, y) memset(x, y, sizeof(x));

using namespace std;

int N, k, input;
vector<int> taste;

int main() {
	ios::sync_with_stdio(false);
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> input;
		taste.push_back(input);
	}
	cin >> k;

	int member = N / 2, sortingN;
	vector<int>::iterator begin, end;
	while (1) {
		sortingN = N / member;
		for (int i = 0; i < member; i++) {
			begin = taste.begin() + (sortingN * i);
			end = taste.begin() + (sortingN * (i + 1));
			sort(begin, end);
		}
		if (member == k) {
			for (auto i : taste) {
				cout << i << " ";
			}
			break;
		}
		member /= 2;
	}
}

더불어 iterator 선언 방법도 다시 공부