[Programmers] Lv2. オープンチャットルーム[python]
問題の説明
KakaoTalk公開チャットルームでは友達ではない人とチャットができ、仮想のニックネームでチャットルームに入ることができます.
新入社員のキム・クルーはKakaoTalkの公開チャットルームを開設するため、さまざまな人が入ったり出たりできる管理窓口を作ることにした.誰かがチャットルームに入ると、次のメッセージが出力されます.
「ニックネームが入ってきた」
誰かがグループから外に出ると、次のメッセージが印刷されます.
[ニックネーム]出て行った
グループ内で名前を変更する方法は2つあります.
グループを離れた後、新しいネット名に入ります.
グループで名前を変更します.
ニックネームを変更すると、既存のチャットルームから出力された情報のニックネームもすべて変更されます.
たとえば、チャットルームで「Muzi」と「Prodo」のニックネームを使用している人が順番に入ると、チャットルームから次のメッセージが出力されます.
「ムジが入ってきた」
「Prodoが入ってきた」
もしグループの中の人が外に出たら、グループには次のようなメッセージが表示されます.
「ムジが入ってきた」
「Prodoが入ってきた」
「ムジは出て行った」
Muziが脱退して再入場した場合、Prodo名義で入場すると、既存のチャットルームのMuziもProdoに変更され、以下のようになります.
「Prodoが入ってきた」
「Prodoが入ってきた」
「Prodoが出てきた」
「Prodoが入ってきた」
チャットルームでは重複したニックネームの使用が許可されているため、現在チャットルームにProdoを使用している人が2人います.2番目にチャットルームに入ったProdoがニックネームをRyanに変更すると、チャットルームの情報は次のように変更されます.
「Prodoが入ってきた」
「Ryanが入ってきた」
「Prodoが出てきた」
「Prodoが入ってきた」
solution関数を完了し、チャットルームを入力または離れると、パラメータがニックネームを変更したレコードを含む文字列配列レコードである場合、すべてのレコード処理が完了すると、最終的に部屋を開いた人が見たメッセージが文字列配列で返されます.
せいげんじょうけん
recordは、1または100000以下の文字列を含む配列です.
次はrecordの文字列の説明です.
すべてのプレイヤーは[プレイヤーID]で区別されます.
[ユーザID]ユーザは[ニックネーム]でチャットルームに入る-[Enter[ユーザID][ニックネーム](ex.[Enter uid 1234 Muzi])
[ユーザID]ユーザチャットルームを終了する-[ユーザID](ex.[Leaveuid 1234])
[ユーザID]ユーザニックネームを[ユーザ名]-[ユーザIDを変更]に変更(ex.[uid 1234 Muziを変更])
最初の言葉はEnter、Leave、Changeです.
各語はスペースで区切られ、大文字、小文字、数字のみで構成されています.
プレイヤーIDとニックネームは大文字と小文字を区別します.
プレイヤーIDとニックネームの長さは1以上10以下です.
グループから出てきたプレイヤーがネット名を変更するなど、誤った入力はしません.
I/O例
Code
def solution(record):
answer =[]
dic = {}
for s in record:
if len(s.split())==3:
dic[s.split()[1]]= s.split()[-1]
for s in record:
if s.split()[0]=='Enter':
answer.append('%s님이 들어왔습니다.' %dic[s.split()[1]])
if s.split()[0] =='Leave':
answer.append('%s님이 나갔습니다.' %dic[s.split()[1]])
return answer
ニックネームとuidをdickShowneryに設定できるのは、Reference
この問題について([Programmers] Lv2. オープンチャットルーム[python]), 我々は、より多くの情報をここで見つけました https://velog.io/@js03210/Programmers-Lv2.-오픈채팅방-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol