Notice
Recent Posts
Recent Comments
Creative Code
가장 많이 받은 선물 본문
https://school.programmers.co.kr/learn/courses/30/lessons/258712
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <sstream>
#include <cmath>
using namespace std;
int solution(vector<string> friends, vector<string> gifts) {
int answer = 0;
map<pair<string, string>, int>gift; //선물내역 저장
map<string, int>giftrate;//선물지수 저장
for (int i = 0; i < gifts.size(); i++) {
stringstream ss(gifts[i]);
string str;
vector<string>giver;
while (getline(ss,str,' ')) { // 문자열 띄어쓰기 기준으로 파싱
giver.push_back(str);
}
gift[{giver[0], giver[1]}]++; //두 사람간 주고받은 선물개수
giftrate[giver[0]]++; // 선물을 준 사람의 선물지수 추가
giftrate[giver[1]]--; // 선물을 받은 사람의 선물지수 감소
}
map<string, int>result;
for (int i = 0; i < friends.size()-1; i++) {
for (int j = i+1; j < friends.size(); j++) {
if (i == j) continue;
else {
if (gift[{friends[i], friends[j]}] > gift[{friends[j], friends[i]}]) {
result[friends[i]]++; // 선물을 준 개수가 더 많은 사람은 받는 선물의개수 +1
}
else if (gift[{friends[i], friends[j]}] < gift[{friends[j], friends[i]}]) {
result[friends[j]]++;
}
else if (gift[{friends[i], friends[j]}] == gift[{friends[j], friends[i]}]) {
if (giftrate[friends[i]] > giftrate[friends[j]]) {
result[friends[i]]++;
}
else if (giftrate[friends[i]] < giftrate[friends[j]]) {
result[friends[j]]++;
} // 선물을 주고받은 개수가 같을 땐 선물지수가 높은사람이 받는 선물의개수 +1
}
}
}
}
for (auto k = result.begin(); k != result.end(); k++) {//선물을 가장 많이받는 사람의 개수찾기
answer = max(answer, k->second);
}
return answer;
}
int main() {
cout << solution({ "muzi","ryan","frodo","neo" }, { "muzi frodo","muzi frodo","ryan muzi",
"ryan muzi","ryan muzi","frodo muzi","frodo ryan","neo muzi" }) << endl;
cout << solution({ "joy","brad","alessandro","conan","david" },
{ "alessandro brad","alessandro joy","alessandro conan", "david alessandro",
"alessandro david" }) << endl;
cout << solution({ "a","b","c" }, { "a b","b a","c a","a c","a c","c a" }) << endl;
}
'프로그래머스 코테 문제 > LEVEL 1' 카테고리의 다른 글
데이터 분석 (0) | 2024.04.12 |
---|---|
이웃한 칸 (0) | 2024.04.12 |
붕대 감기 (0) | 2024.04.12 |