92334 신고 결과 받기

2022. 2. 2. 23:44· 자료구조 알고리즘/코딩테스트

사용언어 :  C++

통과여부 :  O

내 소스 : 

// 신고 결고 받기
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>

using namespace std;

vector<int> solution(vector<string> id_list, vector<string> report, int k_stop) {
    vector<int> answer;
    answer.assign(id_list.size(), 0);
    // stop_list : 신고당한 횟수
    vector<int> stop_list;
    stop_list.assign(id_list.size(), 0);

    // answer_list : 해당하는 유저 여부 (1: true, 0: false) -> 이걸로 더해줄 예정.
    vector<int> answer_list;
    answer_list.assign(id_list.size(), 0);

    // 유저 신고한 id 배열 만들기 report_list
    vector<vector<string> > report_list;
    report_list.resize(id_list.size());
    for(int i = 0; i < report.size(); i++) {
        vector<string> users;

        // split
        stringstream stringstreamvalue(report[i]);
        string st;
        char ch = ' ';
        while(getline(stringstreamvalue, st, ch)) {
            users.push_back(st);
        }
        vector<string>::iterator iter1 = find(id_list.begin(), id_list.end(), users.front());
        int idx = distance(id_list.begin(), iter1);
        report_list[idx].push_back(users.back());
        
        // 신고당한 횟수 저장
        // vector<string>::iterator iter2 = find(id_list.begin(), id_list.end(), users.back());
        // int idx2 = distance(id_list.begin(), iter2);
        // stop_list[idx2]++;
    }
/*
    cout << "----------- 1 -----------" << endl;
    for(int i = 0; i < report_list.size(); i++) {
        cout << "----------- i: " << i << "-----------" << endl;
        for(int j = 0; j < report_list[i].size(); j++) 
            cout << report_list[i].at(j) << endl;
    
        cout << "-------------------------" << endl;
    }
*/
    // sort, remove duplicate
    for(int i; i < report_list.size(); i++) {
        sort(report_list[i].begin(), report_list[i].end());
        report_list[i].erase(unique(report_list[i].begin(), report_list[i].end()), report_list[i].end());

        for(int j = 0; j < report_list[i].size(); j++) {
            vector<string>::iterator iter2 = find(id_list.begin(), id_list.end(), report_list[i].at(j));
            int idx2 = distance(id_list.begin(), iter2);
            stop_list[idx2]++;
        }
    }
/*
    cout << "----------- 2 -----------" << endl;
    for(int i = 0; i < report_list.size(); i++) {
        cout << "----------- i: " << i << "-----------" << endl;
        for(int j = 0; j < report_list[i].size(); j++) 
            cout << report_list[i].at(j) << endl;
    
        cout << "-------------------------" << endl;
    }

    cout << "-------stop list------" << endl;
    for(int i = 0; i < stop_list.size(); i++)
        cout << stop_list[i] << endl;
    cout << "-------------------------" << endl << endl;
*/
    // stop_list 체크해서 k보다 큰 index에 해당하는 id가 들어있는 것 
    for(int i = 0; i < stop_list.size(); i++) {
        if (k_stop <= stop_list[i]) {
            string stop_user = id_list[i];
            // report_list 돌아가면서 찾아서 찾으면 answer++ 해주기
            for(int j = 0; j < report_list.size(); j++) {
                for(int k = 0; k < report_list[j].size(); k++) {
                    // cout << report_list[j][k] << endl;
                    // cout << stop_user.compare(report_list[j][k]) << endl;
                    if (stop_user.compare(report_list[j][k]) == 0) {
                        // cout << "stopuser: " << stop_user << ", report_list[j][k]: " << report_list[j][k] << endl;
                        answer[j]++;
                    }
                }
            }
        }
    }

/*
    cout << "----------- report_list -----------" << endl;
    cout << report_list.size() << endl;
    for(int j = 0; j < report_list.size(); j++) {
        if (report_list.at(j).size() > 0)
            cout << report_list.at(j).front() << endl;
        else
            cout << endl;
    }
    
    cout << "----------- stop_list -----------" << endl;
    for(int j = 0; j < stop_list.size(); j++) {
        cout << stop_list.at(j) << endl;
    }
    */
    cout << "----------- answer -----------" << endl;
    for(int j = 0; j < answer.size(); j++) {
        cout << answer.at(j) << endl;
    }
    
    return answer;
}

int main() {

    vector<string> id_list;
    
    id_list.push_back("muzi");
    id_list.push_back("frodo");
    id_list.push_back("apeach");
    id_list.push_back("neo");
    /*
    id_list.push_back("con");
    id_list.push_back("ryan");
*/
    vector<string> report;
  
    report.push_back("muzi frodo");
    report.push_back("apeach frodo");
    report.push_back("frodo neo");
    report.push_back("muzi neo");
    report.push_back("apeach muzi");
     /* 
    report.push_back("ryan con");
    report.push_back("ryan con");
    report.push_back("ryan con");
    report.push_back("ryan con");
    */
    int k = 2;

    solution(id_list, report, k);
    
    return 0;
}
728x90
반응형

'자료구조 알고리즘 > 코딩테스트' 카테고리의 다른 글

[MySQL] 같지 않다  (0) 2022.05.27
77484 로또의 최고 순위와 최저 순위  (0) 2022.02.03
Insert into a Cyclic Sorted List  (0) 2022.01.30
[다시예정] Flatten a Multilevel Doubly Linked List  (0) 2022.01.30
Add Two Numbers  (0) 2022.01.28
'자료구조 알고리즘/코딩테스트' 카테고리의 다른 글
  • [MySQL] 같지 않다
  • 77484 로또의 최고 순위와 최저 순위
  • Insert into a Cyclic Sorted List
  • [다시예정] Flatten a Multilevel Doubly Linked List
내공얌냠
내공얌냠
내공냠냠
내공얌냠
내공냠냠
내공얌냠
전체
오늘
어제
  • 분류 전체보기 (254)
    • 개발 (113)
      • mediapipe (16)
      • insightface (5)
      • JongjuAR (3)
    • 자료구조 알고리즘 (79)
      • 코딩테스트 (64)
      • 이론 (15)
    • 공부 (7)
      • 단행본 (7)
      • 튜토리얼 (19)
      • 논문 (15)
      • 복기 (5)
    • 참여 (5)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 플러터
  • kubeflow설치가이드
  • google mediapipe
  • 머신러닝이란
  • ios google places api
  • 깃 튜토리얼
  • vscode 스프링 설치
  • 컴퓨터 비전 기초
  • 딥러닝 기반 음성인식 기초
  • 음성인식 튜토리얼
  • mediapipe
  • git tutorial
  • 구글 미디어파이프
  • flutter tutorial
  • speaker adaptation tts
  • postgresql 재설치
  • flutter conference
  • python telegrambot
  • mediapipe translate
  • flutter 행사 후기
  • 플러터 튜토리얼
  • postgresql install in mac
  • 컴퓨터 비전
  • flutter 행사
  • 음성인식 기초
  • flutter
  • 미디어파이프
  • 컴퓨터 비전 책 추천
  • torchscript vs onnx vs tensorrt
  • kubeflow설치안됨

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
내공얌냠
92334 신고 결과 받기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.