• Home
  • About
    • on Weekend photo

      on Weekend

      ๐™Ž๐™ฉ๐™ช๐™™๐™ฎ๐™ž๐™ฃ๐™œ

    • Learn More
    • Instagram
    • Github
  • Archive
    • All Posts
    • All Tags
    • All Categories
  • Categories
    • Problem Solving
    • TIL
    • Study
    • Etc
    • ํ•„์‚ฌ
  • Projects

[๋ฐฑ์ค€] 1138

03 Dec 2020

์ฝ”๋“œ๋กœ ๋ฐ”๋กœ ๊ฐ€๊ธฐ
์ฝ”๋“œ ๊ตฌํ˜„๋ ฅ์ด ๋ถ€์กฑํ•˜๋‹ค. ๋‹ค์‹œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ.

ํ’€์ด

์ค„ ์„ธ์šฐ๊ธฐ ๋ฌธ์ œ๋กœ, ์ค‘๋ณต์—†๋Š” ์ˆœ์ฐจ์ ์ธ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๊ฐ ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์˜ ์™ผ์ชฝ์— ์„  ์‚ฌ๋žŒ ์ค‘ ์ž์‹ ๋ณด๋‹ค ํ‚ค๊ฐ€ ํฐ ์‚ฌ๋žŒ์˜ ๋ช…์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์‹œ๋กœ ๋‚˜์˜จ ์ž…๋ ฅ์€
4
2 1 1 0
์œผ๋กœ, 4๋ช…์˜ ์‚ฌ๋žŒ์ด ์žˆ๊ณ , ํ‚ค๊ฐ€ 1์ธ ์‚ฌ๋žŒ์€ ์ž๊ธฐ๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ 2๋ช…์ด ์™ผ์ชฝ์—, 2์ธ ์‚ฌ๋žŒ์€ 1๋ช…์ด ์™ผ์ชฝ์—, 3์ธ ์‚ฌ๋žŒ์€ ์™ผ์ชฝ์— 1๋ช…, 4์ธ ์‚ฌ๋žŒ์€ ์™ผ์ชฝ์— 0๋ช…์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์™ผ์ชฝ์— n๋ช…์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋Š” ๊ฒฐ๊ตญ โ€˜์ž์‹ ๋ณด๋‹ค ํ‚ค๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ œ์™ธํ–ˆ์„ ๋•Œ ์ž์‹ ์˜ ์ค„์„œ๊ธฐ ์ˆœ์„œ๊ฐ€ n๋ฒˆ์งธโ€™์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ† ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์„ธ์› ์Šต๋‹ˆ๋‹ค. arr๋ฐฐ์—ด์€ ์ค„ ์„  ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ฒ˜์Œ์—๋Š” ์•„๋ฌด๋„ ์ค„์— ์„œ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋…ธ๋“œ์— -1์„ ํ• ๋‹นํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์ดํ›„ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๋ฐ›๊ณ , ์ˆ˜ ๋งŒํผ for๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ โ€˜์™ผ์ชฝ์— ์„  ์‚ฌ๋žŒ ์ˆ˜โ€™๋ฅผ ๋‹ด๋Š” p(people) vector๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์ดํ›„ (0~N]๋งŒํผ ์ด์ค‘ ํฌ๋ฌธ์„ ๋Œ๋ฉฐ, ์ค„์—์„œ ์ž์‹ ๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ์˜ ์ˆ˜๊ฐ€ p[i]๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ์ด๋™(cnt++)ํ•ฉ๋‹ˆ๋‹ค. p[i]๊ฐ€ ๋˜๋ฉด(cnt == left_p) arr[j]์— ํ• ๋‹นํ•˜์—ฌ ์ค„์„ ์„ธ์›Œ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์ œ์™ธํ•˜๊ณ  ๋‹จ์ˆœํžˆ for๋ฌธ์œผ๋กœ ์ถ”์ •ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N^2)์ด๋‚˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ(๋Š˜ ์ž์‹ ์˜ ์ž๋ฆฌ๋ฅผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ฐพ๋Š” ๊ฒฝ์šฐ, ์ฆ‰ 4, 4 3 2 1 ๋“ฑ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ)์—๋„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž๋ฆฌ๋ฅผ ๋นจ๋ฆฌ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(NlogN)์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ

#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <algorithm>

using namespace std;
int arr[11];

int main()
{
	for (int i = 0; i < 11; i++) arr[i] = -1;
	int N = 0;
	cin >> N;
	vector<int> p;
	for(int i=0;i<N;i++) {
		int n;
		cin >> n;
		p.push_back(n);
	}
	for (int i = 0; i < N; i++) {
		int left_p = p[i];
		int cnt = 0;
		for (int j = 0; j < N; j++)
			if (arr[j] == -1) {
				if (cnt == left_p) arr[j] = i + 1;
				cnt++;
			}
	}
	for (int i = 0; i < N; i++) cout << arr[i] << ' ';
	return 0;
}



problem_solvingc++ Share Tweet +1