๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ (42888)

 

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ

์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ ์นด์นด์˜คํ†ก ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ๋Š” ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณธ๋ž˜ ๋‹‰๋„ค์ž„์ด ์•„๋‹Œ ๊ฐ€์ƒ์˜ ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์‹ ์ž…์‚ฌ์›์ธ ๊น€ํฌ๋ฃจ๋Š” ์นด์นด์˜คํ†ก ์˜ค

programmers.co.kr

 

์ ‘๊ทผ๋ฐฉ๋ฒ•

"name๋‹˜์ด ์ž…์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค." , "name๋‹˜์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค."์˜ name์€ ์—…๋ฐ์ดํŠธ ๋œ ๋‚ด์šฉ์„ ํ•ญ์ƒ ๋ฐ˜์˜ํ•ด์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ name๋Œ€์‹  userId๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐ™์€ userId์˜ ๋ฉ”์‹œ์ง€๋Š”
"userId๋‹˜์ด ์ž…์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค." , "userId๋‹˜์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค."๋กœ ํ‘œํ˜„๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  userIdName ๊ฐ์ฒด์— userId์˜ value ๊ฐ’์œผ๋กœ ๋งˆ์ง€๋ง‰์— ์—…๋ฐ์ดํŠธ๋œ name์„ ํ• ๋‹นํ•œ๋‹ค.

๋์œผ๋กœ answer ๋ฐฐ์—ด์— userIdLog ๋ฐฐ์—ด์˜ userId๋ฅผ name์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๋ฌธ์ž์—ด์„ ์‚ฝ์ž…ํ•œ๋‹ค.

ํ—ค๋งจ๋ถ€๋ถ„
record.forEach(e => {
    const [state, userId, name] = e.split(" ");
    if(state === "Enter"){
        userIdLog.push([userId, "๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."]);
    }else if(state === "Leave"){
        userIdLog.push([userId, "๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."]);
    }  
    userIdName[userId] = name;
})โ€‹
 
์œ„ ์ฝ”๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ํ†ต๊ณผ๋ฅผ ํ•˜์ง€ ๋ชปํ•ด์„œ ๊ณฐ๊ณฐํžˆ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ state==='Leave' ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
record.forEach(e => {
    const [state, userId, name] = e.split(" ");
    if(state === "Enter"){
        userIdLog.push([userId, "๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."]);
    }
    if(state === "Leave"){
        userIdLog.push([userId, "๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."]);
    } 
    console.log(state, userId, name);
        
    userIdName[userId] = name;
})

console.log๋กœ state==='Leave'์ผ๋•Œ๋ฅผ ์ฐ์–ด๋ณด๋ฉด
`Leave uid1234 undefined` ์ด์ฒ˜๋Ÿผ name = undefined๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.

๋•Œ๋ฌธ์— state === "Leave" ์ผ๋•Œ return์„ ํ†ตํ•ด forEach๋ฌธ์˜ ๋‹ค์Œ ์š”์†Œ๋กœ ๋„˜์–ด๊ฐ€์•ผํ•œ๋‹ค.

์—ฌ๋‹ด์œผ๋กœ if-else if๊ฐ€ ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ์—ฌ์„œ if ,if๋กœ ๋ฐ”๊พธ๋‹ˆ ์ฝ”๋“œ ์†๋„๊ฐ€ ๋” ๋นจ๋ผ์กŒ๋‹ค.

if-else if์ผ๋•Œ

if , if์ผ๋•Œ


 

 

function solution(record) {
    var userIdLog = [];
    var answer = [];
    const userIdName = {};

    record.forEach(e => {
        const [state, userId, name] = e.split(" ");
        if(state === "Enter"){
            userIdLog.push([userId, "๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."]);
        }
        if(state === "Leave"){
            userIdLog.push([userId, "๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."]);
            return;
        }  
        userIdName[userId] = name;
    })


    userIdLog.map((e) => answer.push(userIdName[e[0]] + e[1]))
    return answer
}