말랑한 하루
[Programmers] 오픈채팅방 (Lv 2, JavaScript) 본문
반응형
[ 개요 ]
풀이시간 : 30분
[ 학습 내용 ]
- forEach()
많은 풀이에서 map보다 forEach를 활용한 풀이가 많이 보였다. 배열을 순회하는 경우 항상 map을 사용했는데,
1) 배열 순회만이 목적이면 forEach를,
2) 순회 후 새 배열을 얻는 것이 목적이면 map을 사용한다.
각 활용방식에 따라 적절히 이용하자.
- 비구조화 할당
객체에 대한 비구조화 할당에 대해서만 인지하고 있었다.
const {id, name} = item;
배열에 대한 비구조화 할당 역시 같은 방식으로 활용할 수 있었다.
const [id, name] = item.split(" ");
늦게나마 알게되어 다행.
[ 소스 코드 ]
function solution(record) {
var answer = [];
var users = [];
record.map((write) => {
let [user_action, user_id, user_name] = write.split(" ");
if (user_name !== undefined) {
users[user_id] = user_name;
}
if (user_action === "Enter" || user_action === "Leave") {
let action = user_action === "Enter"
? "님이 들어왔습니다."
: "님이 나갔습니다.";
answer.push({
"user_id": user_id,
"user_action": action,
})
}
})
answer = answer.map((ans) => {
return users[ans.user_id] + ans.user_action;
})
return answer;
}
[ 심화 코드 ]
var solution=(_,m={})
=> _.reduce((c,r)
=> ([[o],i,n]=r.split(' '),o!='L'&&(m[i]=n),o!='C'&&c.push([i,o=='E']),c), []).map(([i,e])
=> m[i]+'님이 '+(e?'들어왔':'나갔')+'습니다.')
[ 코드 분석 ]
경이롭다. 분석이 꼭 필요하다.
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 괄호 변환 (Lv 2, JavaScript) (0) | 2022.07.13 |
---|---|
[Programmers] 메뉴 리뉴얼 (Lv 2, JavaScript) (0) | 2022.07.11 |
[Programmers] 문자열 압축 (Lv 2, JavaScript) (0) | 2022.07.08 |
[Programmers] 비밀지도 (Lv 1, JavaScript) (0) | 2022.07.06 |
[Programmers] 실패율 (Lv 1, JavaScript) (0) | 2022.07.06 |
Comments