Algorithm/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€ BOJ / C++] 1138๋ฒˆ: ํ•œ ์ค„๋กœ ์„œ๊ธฐ

meeeeejin 2020. 12. 29. 20:27

 

๋ฌธ์ œ๋งํฌ: www.acmicpc.net/problem/1138 

 

1138๋ฒˆ: ํ•œ ์ค„๋กœ ์„œ๊ธฐ

์ฒซ์งธ ์ค„์— ์‚ฌ๋žŒ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ํ‚ค๊ฐ€ 1์ธ ์‚ฌ๋žŒ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ž๊ธฐ๋ณด๋‹ค ํ‚ค๊ฐ€ ํฐ ์‚ฌ๋žŒ์ด ์™ผ์ชฝ์— ๋ช‡ ๋ช…์ด ์žˆ์—ˆ๋Š”์ง€ ์ฃผ์–ด์ง„๋‹ค. i๋ฒˆ์งธ ์ˆ˜๋Š” 0๋ณด๋‹ค

www.acmicpc.net

 

ํ’€์ด

 

ํ‚ค๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ๋ถ€ํ„ฐ ๋ช‡ ๋ฒˆ์งธ ์ž๋ฆฌ์— ์„œ๋ฉด ๋˜๋Š”์ง€ ์ •ํ–ˆ๋‹ค. ์ •๋‹ต ๋ฐฐ์—ด์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋‹ค์Œ, ์ž๊ธฐ๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ์ด ์™ผ์ชฝ์— 2๋ช… ์žˆ๋‹ค๋ฉด 3๋ฒˆ์งธ ์ž๋ฆฌ์— ์„œ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์ž‘์€ ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ์ •๋‹ต ๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ„ ์‚ฌ๋žŒ(์ค„์„ ์„  ์‚ฌ๋žŒ)์€ ๋ชจ๋‘ ์ž์‹ ๋ณด๋‹ค ํ‚ค๊ฐ€ ์ž‘๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์˜ˆ์ œ ์ž…๋ ฅ์ฒ˜๋Ÿผ [2, 1, 1, 0]์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ answer์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค. answer์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋Š” [0, 0, 0, 0]์ด๊ณ , ์ค„์„ ์„  ์ˆœ์„œ๋Œ€๋กœ ํ‚ค๋ฅผ ์ €์žฅํ•œ๋‹ค. 

 

  1. ํ‚ค๊ฐ€ 1์ธ ์‚ฌ๋žŒ์˜ ์™ผ์ชฝ์— 2๋ช…์ด ์žˆ์œผ๋ฏ€๋กœ answer์—์„œ 0์„ ๋‘ ๋ฒˆ ๊ฑด๋„ˆ๋›ฐ๊ณ  3๋ฒˆ์งธ ์ž๋ฆฌ์— ์ค„์„ ์„ ๋‹ค. 
    answer = [0, 0, 1, 0]
  2. ํ‚ค๊ฐ€ 2์ธ ์‚ฌ๋žŒ์˜ ์™ผ์ชฝ์— 1๋ช…์ด ์žˆ์œผ๋ฏ€๋กœ answer์—์„œ 0์„ ํ•œ ๋ฒˆ ๊ฑด๋„ˆ ๋›ฐ๊ณ  2๋ฒˆ์งธ ์ž๋ฆฌ์— ์ค„์„ ์„ ๋‹ค. 
    answer = [0, 2, 1, 0]
  3. ํ‚ค๊ฐ€ 3์ธ ์‚ฌ๋žŒ์˜ ์™ผ์ชฝ์— 1๋ช…์ด ์žˆ์œผ๋ฏ€๋กœ answer์—์„œ 0์„ ํ•œ ๋ฒˆ ๊ฑด๋„ˆ๋›ฐ๊ณ , ์ด๋ฏธ ์ค„์„ ์„  2์™€ 1์„ ๊ฑด๋„ˆ ๋›ฐ๊ณ  4๋ฒˆ์งธ ์ž๋ฆฌ์— ์ค„์„ ์„ ๋‹ค. 
    answer = [0, 2, 1, 3]
  4. ํ‚ค๊ฐ€ 4์ธ ์‚ฌ๋žŒ์˜ ์™ผ์ชฝ์— 0๋ช…์ด ์žˆ์œผ๋ฏ€๋กœ ๋งจ ์•ž์— ์ค„์„ ์„ ๋‹ค. 
    answer = [4, 2, 1, 3]

 

 

 

์†Œ์Šค์ฝ”๋“œ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//1138๋ฒˆ: ํ•œ ์ค„๋กœ ์„œ๊ธฐ
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
 
    int N;
    cin >> N;
    vector<int> v(N), answer(N);
    for(int i = 0; i < N; i++)
        cin >> v[i];
    
    for(int i = 0; i < N; i++) {
        int j = 0;
        while(v[i] != 0) {  //์ค„์„ ์„  ์ˆœ์„œ ์ฐพ๊ธฐ
            if(answer[j] == 0) {
                v[i]--;
            }
            j++;
        }
        while(answer[j] != 0) j++;  //์‚ฌ๋žŒ์ด ์„œ์žˆ์œผ๋ฉด ๋‹ค์Œ์œผ๋กœ ์ด๋™
        answer[j] = i + 1;
    }
    
    for(int i = 0; i < N; i++)
        cout << answer[i] << ' ';
 
    return 0;
}
cs

 

 

 

๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

 

 

 

728x90