문제

https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

내가 푼 답

 

#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

vector<int> solution(vector<string> id_list, vector<string> report, int k) {

    int id_size = id_list.size();

    vector<int> answer(id_size, 0);
    vector<bool> vote_check(id_size,false);
    vector<vector<bool>> vote(id_size, vote_check);
    vector<int> voted_cnt(id_size, 0);

    map<string, int> list;
    for (int i = 0; i < id_size; i++)
        list.insert(pair<string, int>{ id_list[i], i });        

    sort(report.begin(), report.end());
    report.erase(unique(report.begin(), report.end()), report.end());

    for (int i = 0; i < report.size(); i++)
    {
        string a, b;
        bool chk = true;
        for (int j = 0; j < report[i].size(); j++)
        {
            if (report[i][j] == ' ') { chk = false; continue; }
            if (chk)
                a.push_back(report[i][j]);
            else
                b.push_back(report[i][j]);
        }
        vote[list[a]][list[b]] = true;
        voted_cnt[list[b]]++;
    }

    for (int i = 0; i < id_size; i++)
    {
        if (voted_cnt[i] < k) continue;

        for (int j = 0; j < id_size; j++)
            if (vote[j][i]) answer[j]++;    
    }
    return answer;
}

 

다른사람 풀이

 

#include <bits/stdc++.h>
#define fastio cin.tie(0)->sync_with_stdio(0)
using namespace std;

vector<int> solution(vector<string> id_list, vector<string> report, int k) {
    // 1.
    const int n = id_list.size();
    map<string, int> Conv;
    for (int i = 0; i < n; i++) Conv[id_list[i]] = i;

    // 2.
    vector<pair<int, int>> v;
    sort(report.begin(), report.end());
    report.erase(unique(report.begin(), report.end()), report.end());
    for (const auto& s : report) {
        stringstream in(s);
        string a, b; in >> a >> b;
        v.push_back({ Conv[a], Conv[b] });
    }

    // 3.
    vector<int> cnt(n), ret(n);
    for (const auto& [a, b] : v) cnt[b]++;
    for (const auto& [a, b] : v) if (cnt[b] >= k) ret[a]++;
    return ret;
}
Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.11
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

최근에 올라온 글

최근에 달린 댓글

글 보관함