
맞긴 맞는데 시간 복잡도가 너무 커서 다른 사람 코드를 참조 하였다.
log :{ 아이디 : [들어왔습니다,1] ,[나갔습니다,2] }
nickname:{ 아이디 : 'muxiz' , 아이디, ' prodo'}
처음에는 다 object 형식으로 만들어야된다고생각을 했었다
아이디를 기준으로 log 기록을 만들고 마지막에 아이디를 닉네임이름으로 변경시키고
sort 를 통해 순서를 바꾸면 된다고 생각을 했었다.
[아이디, 들어왔습니다. 1] 이런식으로 변경하기 위해선
오브젝트를 Object.entires() 을 사용해서 바꾸면 [ 아이디 ,[ log기록,1] ,[log기록,2]]
이런식으로 이상하게 나와 결국에는 내부 for 문을 또 돌려서 추가해주는 번거로운 작업이 발생하였다. 사실 여기서 잘못된다는것을 알아서 다른방법으로 풀어야됬는데 생각이 안났다.
sort 시간 복잡도 증가
function solution(record) {
var answer = [];
//1. 들어왔으면 아이디 고정 object 형식으로 고정 아이디 : 닉네임 식으로 고정
// change 한 경우 :닉네임 수정 > 들어온 경우 일렬로 수정해야되기 때문에
// 배열로 저장해놓을끼.. 근데 배열 find 하나밖에 못칫는디...... 찾을려면 엄청 오래걸리고
// uld1234: ['들어왔습니다.',1] ['나갔습니다.',2]
// uid4567:[prodo,IN,2]
// 로그기록과 닉네임을 따로 빼서 for 문 끝나면 > key 값을 닉네임으로 바꿔줌 object assign 함 ,
// sort 함
var log={
}
var nick={
}
for(var i=0; i<record.length; i++){
var [oper,id,nickname]=record[i].split(' ');
if(oper=='Enter'|| oper=='Change'){
nick[id]=nickname;
}
if(oper=='Enter'){
if(!log[id]){
log[id]=[['들어왔습니다.',i]]
}
else{
log[id].push(['들어왔습니다.',i])
}
}
if(oper=='Leave'){
if(!log[id]){
log[id]=[['나갔습니다.',i]]
}
else{
log[id].push(['나갔습니다.',i])
}
}
}
var new_return=[];
//새로운 객체로 형성 해야될듯요
var new_obj=[];
for(var name in log){
//console.log(log[name],'이름')
for(var i=0; i<log[name].length; i++){
new_obj.push([nick[name],...log[name][i]])
}
}
new_obj.sort((a,b)=> a[2]-b[2]).map((el)=>{
new_return.push(el[0]+'님이 '+el[1])
});
//console.log(new_return)
return new_return;
}
결국은 맞앗지만 시간이 너무 오래걸리는것을 볼수 있다.
다른 사람 코드를 보니
log :{ } 이런식으로 두는게 아닌 배열 형태를 이용해서 만든다. 이때 닉네임을 넣지 않고
아이디+ '들어왓습니다' 이런식으로 넣은다음 다시 전처리를 통해 답을 도출한것을 볼수 있다.
nickname 을 object 형식으로 하는것은 같았다..
function solution(record) {
var log=[];
var nick={
}
for(var i=0; i<record.length; i++){
var [oper,id,nickname]=record[i].split(' ');
if( oper=='Change'){
nick[id]=nickname;
}
if(oper=='Enter'){
log.push([id,'IN'])
nick[id]=nickname;
}
if(oper=='Leave'){
log.push([id,'Leave'])
}
}
for(var i=0; i<log.length; i++){
var [id,here]=log[i];
if(here=='IN'){
log[i]=`${nick[id]}님이 들어왔습니다.`
}
else if(here=='Leave'){
log[i]=`${nick[id]}님이 나갔습니다.`
}
}
return (log)
}