KACA 2019-オープンチャットルーム
5532 ワード
ポリシー
1)使用しているsstreamがどれほど良いか
2)無秩序mapに既存のkey-value、value値が更新可能か
最初の解
->コードは正しく実行されますが、テストケースでは無効です.
1番目の値はidで、2番目の値はニックネームです.
EnterとLeaveを理解するために、Vector>を作成します.
Changeでなければ順番に挿入された状態です.
ソースコード
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
unordered_map<string, string>u;
vector<pair<string,string>>v;
for(int i = 0; i < record.size(); i++)
{
stringstream ss;
ss << record[i];
string command, id ,name;
ss >> command >> id >> name;
u[id] = name;
if(command != "Change")
{
v.push_back({command, id});
}
}
for(const auto &i : v)
{
string word = "";
if(i.first == "Enter")
{
word = u[i.second];
word += "님이 들어왔습니다.";
}
else if(i.first == "Leave")
{
word = u[i.second];
word += "님이 나갔습니다.";
}
answer.push_back(word);
}
return answer;
}
私の考えは間違っている。
->vectorのためにメモリを超えていますか?
本当に間違った考えで近づいたと思います.
=>Leaveはid-ニックネームを更新すべきではありません...
コードが変更されました。
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string>answer;
unordered_map<string, string>u;
vector<pair<string,string>>v;
for(int i = 0; i < record.size(); i++)
{
stringstream ss;
ss << record[i];
string command, id ,name;
ss >> command >> id >> name;
if(command == "Change" || command == "Enter")
{
u[id] = name;
}
if(command != "Change")
v.push_back({command, id});
}
for(const auto &i : v)
{
string word = "";
if(i.first == "Enter")
{
word = u[i.second];
word += "님이 들어왔습니다.";
}
else if(i.first == "Leave")
{
word = u[i.second];
word += "님이 나갔습니다.";
}
answer.push_back(word);
}
return answer;
}
Reference
この問題について(KACA 2019-オープンチャットルーム), 我々は、より多くの情報をここで見つけました
https://velog.io/@kwt0124/카카오-2019-오픈채팅방
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
->コードは正しく実行されますが、テストケースでは無効です.
1番目の値はidで、2番目の値はニックネームです.
EnterとLeaveを理解するために、Vector
Changeでなければ順番に挿入された状態です.
ソースコード
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
unordered_map<string, string>u;
vector<pair<string,string>>v;
for(int i = 0; i < record.size(); i++)
{
stringstream ss;
ss << record[i];
string command, id ,name;
ss >> command >> id >> name;
u[id] = name;
if(command != "Change")
{
v.push_back({command, id});
}
}
for(const auto &i : v)
{
string word = "";
if(i.first == "Enter")
{
word = u[i.second];
word += "님이 들어왔습니다.";
}
else if(i.first == "Leave")
{
word = u[i.second];
word += "님이 나갔습니다.";
}
answer.push_back(word);
}
return answer;
}
私の考えは間違っている。
->vector
本当に間違った考えで近づいたと思います.
=>Leaveはid-ニックネームを更新すべきではありません...
コードが変更されました。
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string>answer;
unordered_map<string, string>u;
vector<pair<string,string>>v;
for(int i = 0; i < record.size(); i++)
{
stringstream ss;
ss << record[i];
string command, id ,name;
ss >> command >> id >> name;
if(command == "Change" || command == "Enter")
{
u[id] = name;
}
if(command != "Change")
v.push_back({command, id});
}
for(const auto &i : v)
{
string word = "";
if(i.first == "Enter")
{
word = u[i.second];
word += "님이 들어왔습니다.";
}
else if(i.first == "Leave")
{
word = u[i.second];
word += "님이 나갔습니다.";
}
answer.push_back(word);
}
return answer;
}
Reference
この問題について(KACA 2019-オープンチャットルーム), 我々は、より多くの情報をここで見つけました https://velog.io/@kwt0124/카카오-2019-오픈채팅방テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol