2019 KACAブラインド:チャットルームオープン
11422 ワード
問題の説明
KakaoTalk公開チャットルームでは友達ではない人とチャットができ、仮想のニックネームでチャットルームに入ることができます.
新入社員のキム・クルーはKakaoTalkの公開チャットルームを開設するため、さまざまな人が入ったり出たりできる管理窓口を作ることにした.誰かがチャットルームに入ると、次のメッセージが出力されます.[网名]入ってきました 誰かがグループから外に出ると、次のメッセージが印刷されます.出て行った グループ内で名前を変更する方法は2つあります.グループを離れた後、新しいネット名に入ります. チャットルームでニックネームを変更します. ニックネームを変更すると、既存のチャットルームから出力された情報のニックネームもすべて変更されます.
たとえば、チャットルームでMuziとProdoのニックネームを使用している人が順番に入ると、チャットルームから次のメッセージが出力されます. Muziが入ってきました Prodoが入ってきました もしグループの中の人が外に出たら、グループには次のようなメッセージが表示されます. Muziが入ってきました Prodoが入ってきました Muziが出てきました Muziが脱退して再入場した場合、Prodo名義で入場すると、既存のチャットルームのMuziもProdoに変更され、以下のようになります. Prodoが入ってきました Prodoが入ってきました Prodoが出てきました Prodoが入ってきました チャットルームでは重複したニックネームの使用が許可されているため、現在チャットルームにProdoを使用している人が2人います.2番目にチャットルームに入ったProdoがニックネームをRyanに変更すると、チャットルームの情報は次のように変更されます. Prodoが入ってきました Ryanが入ってきました Prodoが出てきました Prodoが入ってきました solution関数を完了し、チャットルームを入力または離れると、パラメータがニックネームを変更したレコードを含む文字列配列レコードである場合、すべてのレコード処理が完了すると、最終的に部屋を開いた人が見たメッセージが文字列配列で返されます.
せいげんじょうけん
recordは、1または100000以下の文字列を含む配列です.
次はrecordの文字列の説明です.すべてのプレイヤーは[ユーザID]で区別される. [ユーザID]ユーザが[ニックネーム]でチャットルームに入る[ユーザID][ニックネーム](ex.Enteruid 1234 Muzi) [ユーザID]ユーザチャットルームを終了-Lave[ユーザID](ex.Leaveuid 1234) [ユーザID]ユーザニックネームを[ユーザ名][ユーザID](ex.change uid 1234 Muzi) に変更最初の単語はEnter、Leve、Changeです. 各単語はスペースで区切られており、大文字、小文字、数字のみで構成されています. ユーザーIDとニックネームは、大文字と小文字を区別します. ユーザIDとニックネームの長さは1以上10以下である. 群から出てきたプレイヤーがネット名を変更するなど、誤った入力はしません. JAVAコード
KakaoTalk公開チャットルームでは友達ではない人とチャットができ、仮想のニックネームでチャットルームに入ることができます.
新入社員のキム・クルーはKakaoTalkの公開チャットルームを開設するため、さまざまな人が入ったり出たりできる管理窓口を作ることにした.誰かがチャットルームに入ると、次のメッセージが出力されます.
たとえば、チャットルームでMuziとProdoのニックネームを使用している人が順番に入ると、チャットルームから次のメッセージが出力されます.
せいげんじょうけん
recordは、1または100000以下の文字列を含む配列です.
次はrecordの文字列の説明です.
import java.util.ArrayList;
import java.util.HashMap;
class Solution {
public String[] solution(String[] record) {
HashMap<String,String> hm = new HashMap<String,String>();
ArrayList<String> sList = new ArrayList<String>();
for(String s : record){
String[] tempSArr = s.split(" ");
if(tempSArr[0].equals("Enter") || tempSArr[0].equals("Change")) hm.put(tempSArr[1], tempSArr[2]);
}
for(String s : record){
String[] tempSArr = s.split(" ");
if(!tempSArr[0].equals("Change")) {
String tempS = makeWord(tempSArr, hm);
sList.add(tempS);
}
}
String[] answer = sList.toArray(new String[sList.size()]);
return answer;
}
private String makeWord(String[] sArr, HashMap hm){
String tempS = hm.get(sArr[1]) + "님이 ";
if (sArr[0].equals("Enter")) tempS += "들어왔습니다.";
else if (sArr[0].equals("Leave")) tempS += "나갔습니다.";
return tempS;
}
}
Reference
この問題について(2019 KACAブラインド:チャットルームオープン), 我々は、より多くの情報をここで見つけました https://velog.io/@dltkdgns3435/2019카카오블라인드-오픈채팅방テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol