본문 바로가기

코딩 테스트

프로그래머스 신고 결과 받기 문제

신고 결과 받기 문제…… 맵이나 vector 를 분명 더 쉽게 했었는데 하다가 도저히 못찾고 노가다로 풀어버렸다. 그런데 다 풀고 나서 생각나버림… vector 를 이중으로 사용하던 map 을 이중으로 사용하던 결국 이것을 second 쪽에 넘버링 해주면 string 도 int 처럼 사용 가능하다… 잊지말자

#include <string>
#include <vector>
#include <sstream>

using namespace std;

vector<int> solution(vector<string> id_list, vector<string> report, int k) {
        
    vector<int> answer;
    answer.resize(id_list.size());
    vector<vector<bool>> declared(id_list.size(), vector<bool>(id_list.size(),false));
    vector<int> rec(id_list.size(), 0);
    
    for(auto &id : report )
    {
        stringstream ss(id);
        string reporter, received;
        ss >> reporter >> received;
        
        for(int i = 0; i<id_list.size(); ++i)
        {
            if(id_list[i] == reporter)
            {
                for(int j = 0; j<id_list.size(); ++j)
                {
                    if(id_list[j] == received)
                    {
                       if(declared[i][j] == false)
                       {
                           declared[i][j] = true;
                           rec[j]++; 
                           break;
                       }
                    }
                }
                break;
            }
        }      
        
    }
    for(int i = 0; i<rec.size();++i)
    {
        if(rec[i]>=k)
        {
            for(int j = 0; j<declared.size();++j)
            {
                if(declared[j][i])
                {
                    answer[j]++;
                }
            }
        }
    }
 
    
    return answer;
}

 

 

 

'코딩 테스트' 카테고리의 다른 글

프로그래머스 1차 비밀지도  (0) 2024.02.14
프로그래머스 k진수에서 소수 개수 구하기  (0) 2024.02.14
백준 4101  (0) 2023.07.10
백준 2475  (0) 2023.07.09
백준 1225  (0) 2023.07.08