언리얼 공부 블로그
코드카타 : 신고 결과 받기, 최댓값과 최솟값, JadenCase 본문

- 유저가 최종적으로 받은 처리 결과 메일의 개수 계산, 결과를 배열에 순서대로 담아 retrun
- report 벡터에 있는 신고 기록을 map에 저장, 저장한 신고기록으로 정지 될 사람과 메일을 받을 사람을 map으로 저장,
- id_list 를 저장한 정지 될 사람과 메일을 받을 사람을 ID에 맞춰 메일 보내기
#include <string>
#include <vector>
#include <map>
#include <set>
#include <sstream>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer;
map<string, set<string>> reported_info; // 신고 기록 저장
map<string, int> mail_counts; // 유저 별 받을 메일 수 저장
// report 벡터 순회 후 신고기록을 중복 제거하여 reported_info 에 저장
for (const string& r : report) {
// stringstream 으로 문자열 r 준비
stringstream ss(r);
string reporter_id, reported_id;
// 문자열에서 ID 분리
ss >> reporter_id >> reported_id;
// 분리한 ID 사용하여 map 기록
reported_info[reported_id].insert(reporter_id);
}
// reported_info 의 map을 이용해 정지될 사람과 메일을 받을 사람을 저장
for (auto const& [reported_user, reporters] : reported_info) {
// 신고당한 횟수 k 이상인지 확인
if (reporters.size() >= k) {
for (const string& reporter_id : reporters) {
mail_counts[reporter_id]++;
}
}
}
// id_list 순회해 mail_counts 맵에서 ID에 해당하는 메일을 찾아 넣어주기
for (const string& id : id_list) {
answer.push_back(mail_counts[id]);
}
return answer;
}
최댓값과 최솟값

- 문자열 s를 벡터로 저장하고, sort 오름차순으로 정렬해 첫번째, 마지막을 string으로 가져오기.
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
// 문자열 s 를 vector 로 저장
stringstream ss(s);
vector<int> numbers;
int num;
// ss 에서 공백 기준으로 숫자를 읽어 num에 저장
while (ss >> num) {
numbers.push_back(num);
}
// 최대값 최소값 찾기
sort(numbers.begin(), numbers.end());
answer += to_string(numbers.front());
answer += " ";
answer += to_string(numbers.back());
return answer;
}
JadenCase

- 문자열 가장 첫글자 대문자로 변경,
- 공백인 경우 다음 글자는 대문자,
- 둘 다 아닌경우 소문자로 변경하기
#include <string>
#include <vector>
#include <cctype>
using namespace std;
string solution(string s) {
string answer = "";
bool is_start_of_word = true;
// string s 내 모든 단어 확인
for(int i = 0; i < s.length(); ++i) {
// string s 의 단어가 공백인 경우, is_start_of_word = true,
if (s[i] == ' ') {
is_start_of_word = true;
}
// 단어가 문자인 경우, 현재 문자를 대문자로 변경 후 is_start_of_word = false로 변경
else if (is_start_of_word) {
s[i] = toupper(s[i]);
is_start_of_word = false;
}
// 단어 중간 문자일 때는 소문자로 변경
else {
s[i] = tolower(s[i]);
}
}
answer = s;
return answer;
}