문제 링크 : https://www.acmicpc.net/problem/1713
문제 조건에 나와있는 그대로 코딩하면 되는 문제 입니다.
인스타그램이나 페이스북을 생각하면서 코딩하면 더 재밌는 문제 입니다.
마치 SNS 개발자가 된 느낌 입니다.
소스 코드 :
문제 조건에 나와있는 그대로 코딩하면 되는 문제 입니다.
인스타그램이나 페이스북을 생각하면서 코딩하면 더 재밌는 문제 입니다.
마치 SNS 개발자가 된 느낌 입니다.
소스 코드 :
#include#include #include using namespace std; class Candidate { public: int name; // 이름 int like; // 좋아요 수 int idx; // 게시되었을때의 인덱스 정보 Candidate(int, int, int); }; Candidate::Candidate(int n = 0, int l = 0, int i = 0) : name(n), like(l), idx(i) {}; int main() { int frame; cin >> frame; cin.ignore(); int num; cin >> num; cin.ignore(); vector v; for (int i = 0; i < num; i++) { int c; cin >> c; cin.ignore(); bool flag = false; int saveIdx = 0; // 현재 추천받은 사람이 사진틀 안에 있는지 탐지. for (int q = 0; q < v.size(); q++) { // 사진틀 안에 있다면 if (c == v[q].name) { flag = true; saveIdx = q; break; } } // 겹치는 사람이 있다면, 사진틀 속 그 사람의 좋아요수 올림. if (flag) { v[saveIdx].like++; } // 겹치는 사람이 없을 경우 ( saveIdx = 0 인 상태 ) else { // 아직 액자 개수가 충분할 때 if (v.size() < frame) { v.push_back(Candidate(c, 1, i)); } // 액자 개수가 부족해서 규칙에 따라 한명 없애야 할 때 else { int idx = 1001; int low = 1001; for (int m = 0; m < v.size(); m++) { if (low > v[m].like) { low = v[m].like; idx = v[m].idx; saveIdx = m; } else if (low == v[m].like) { if (idx > v[m].idx) { idx = v[m].idx; saveIdx = m; } } } Candidate tmp(c, 1, i); v[saveIdx] = tmp; } } }// for문 종료( i ) // 오름차순 정렬 vector order; for (int i = 0; i < frame; i++) order.push_back(v[i].name); sort(order.begin(), order.end()); for (int i = 0; i < frame; i++) cout << order[i] << ' '; cout << endl; }
댓글
댓글 쓰기