[プログラマー:Lv 2]オープンチャットルーム(ft.kakao)
8796 ワード
1st Try
2nd Try
方法
🔹 idに対応するニックネームに直ちにアクセスし、変更可能な方法を考慮します(分割する必要はありません).
🔹 一度回転した時にIDのニックネームをオブジェクトとして保存するのが有効だと思います(オブジェクトであればO(1)にアクセスまたは変更するため)
🔹 推定複雑度:2 n(マッピングが2つあるため)
🔹 スピードじゃないみたい
🔹 答え:split後、それぞれcontroller、id、ニックネームとして入れますが、leaveにはニックネームがないので定義されていません.テストコードの場合、後に同じid enterがあるので、undefinedを新しいニックネームに変更できます.ただし、他のテストコードでは、後でenterがない場合、ニックネームは未定義のままになり、失敗しました.
record.map(item => {
const [controller, id, nickname] = item.split(' ');
nickObj[id] = nickname;
})
record.map(item => {
const [controller, id, nickname] = item.split(' ');
if (controller !== 'Leave') {
nickObj[id] = nickname;
}
})
最終コード
function solution(record) {
const nickObj = {};
const answer = [];
record.map(item => {
const [controller, id, nickname] = item.split(' ');
if (controller !== 'Leave') {
nickObj[id] = nickname;
}
})
record.map(item => {
const [controller, id, nickname] = item.split(' ');
switch(controller) {
case 'Enter':
answer.push(`${nickObj[id]}님이 들어왔습니다.`);
break;
case 'Leave':
answer.push(`${nickObj[id]}님이 나갔습니다.`);
break;
case 'Change':
break;
}
})
return answer;
}
Reference
この問題について([プログラマー:Lv 2]オープンチャットルーム(ft.kakao)), 我々は、より多くの情報をここで見つけました https://velog.io/@rachel490/프로그래머스-Lv2-오픈채팅방-ft.카카오テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol