๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] #42889 ์‹คํŒจ์œจ

by dar0m! 2019. 9. 9.

2018๋…„ KAKAO BLIND RECRUITMENT

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹คํŒจ์œจ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์‹คํŒจ์œจ ์Šˆํผ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์˜ค๋ ๋ฆฌ๋Š” ํฐ ๊ณ ๋ฏผ์— ๋น ์กŒ๋‹ค. ๊ทธ๋…€๊ฐ€ ๋งŒ๋“  ํ”„๋žœ์ฆˆ ์˜ค์ฒœ์„ฑ์ด ๋Œ€์„ฑ๊ณต์„ ๊ฑฐ๋’€์ง€๋งŒ, ์š”์ฆ˜ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ์ˆ˜๊ฐ€ ๊ธ‰๊ฐํ•œ ๊ฒƒ์ด๋‹ค. ์›์ธ์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์™€ ๊ธฐ์กด ์‚ฌ์šฉ์ž ์‚ฌ์ด์— ์Šคํ…Œ์ด์ง€ ์ฐจ์ด๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒƒ์ด ๋ฌธ์ œ์˜€๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ ๊ณ ๋ฏผ ํ•œ ๊ทธ๋…€๋Š” ๋™์ ์œผ๋กœ ๊ฒŒ์ž„ ์‹œ๊ฐ„์„ ๋Š˜๋ ค์„œ ๋‚œ์ด๋„๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์—ญ์‹œ ์Šˆํผ ๊ฐœ๋ฐœ์ž๋ผ ๋Œ€๋ถ€๋ถ„์˜ ๋กœ์ง์€ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ, ์‹คํŒจ์œจ์„ ๊ตฌํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์œ„๊ธฐ์— ๋น ์ง€๊ณ  ๋ง์•˜๋‹ค. ์˜ค๋ ๋ฆฌ๋ฅผ ์œ„ํ•ด ์‹คํŒจ์œจ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ

programmers.co.kr

 

๋ฌธ์ œ

์‹คํŒจ์œจ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•˜๋ผ.

  • ์‹คํŒจ์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค.
    • ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์œผ๋‚˜ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ / ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜

์ „์ฒด ์Šคํ…Œ์ด์ง€์˜ ๊ฐœ์ˆ˜ N, ๊ฒŒ์ž„์„ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋ฉˆ์ถฐ์žˆ๋Š” ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด stages๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์‹คํŒจ์œจ์ด ๋†’์€ ์Šคํ…Œ์ด์ง€๋ถ€ํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ.

ํ’€์ด

์ œํ•œ์‚ฌํ•ญ์„ ์ œ๋Œ€๋กœ ๋ชป ๋ณด๊ณ  ํ’€์–ด์„œ ํ‹€๋ ธ์—ˆ๋‹ค.

์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ์œ ์ €๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ 0 ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

์ด ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ ํ‹€๋ ธ์„ ๋•Œ์˜ ๋กœ์ง์€ ๋„๋‹ฌํ•œ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฒƒ์„ Max๋ผ๊ณ  ๋‘๊ณ  v ๋ผ๋Š” vector ๊ฐ์ฒด์— ๋„ฃ์„ ๋•Œ Max๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋„๋ก ํ–ˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ถ€๋ถ„์€ ์˜ˆ์ œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€ ์žˆ์„ ๋•Œ๋Š”

#testcase
7
1,2,3,4,5,6

์˜ˆ์ƒ ๋‹ต์•ˆ์ด [6,5,4,3,2,1,7] ์ด์ง€๋งŒ 7์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Max๋ฅผ N์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ๋‘๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ ๋•Œ Max๋ณด๋‹ค ํฐ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ฐฑ์‹ ์‹œํ‚ค ๋„๋ก ์ˆ˜์ •ํ•˜๋‹ˆ ๋งž์ถœ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ฝ”๋“œ

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
34
35
36
37
38
39
40
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<doubleint> p;
 
bool cmp(p a, p b) {
    if (a.first == b.first) {
        return a.second < b.second;
    }
    return a.first > b.first;
}
 
vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    vector<p> v;
    int arr[502= { 0 }, Max = N;
    for (int i = 0; i < stages.size(); i++) {
        arr[stages[i]]++;
        Max = stages[i] > Max ? stages[i] : Max;
    }
    int people = 0;
    for (int i = Max; i > 0; i--) {
        people += arr[i];
        if (i <= N) {
            if (!arr[i])v.push_back({ 0, i });
            else v.push_back({ ((double)arr[i] / people), i });
        }
    }
    sort(v.begin(), v.end(), cmp);
    for (int i = 0; i < v.size(); i++) {
        answer.push_back(v[i].second);
    }
    return answer;
}
 
int main() {
    solution(5, { 21262433 });
    return 0;
 
}
cs

๋Œ“๊ธ€