반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42888
🐍파이썬
def solution(record):
answer = []
dic = {}
for i in record:
arr = i.split()
if arr[0] == "Enter" or arr[0] == "Change":
dic[arr[1]] = arr[2]
for i in record:
arr = i.split()
if arr[0] == "Enter":
answer.append(dic[arr[1]]+"님이 들어왔습니다.")
elif arr[0] == "Leave":
answer.append(dic[arr[1]]+"님이 나갔습니다.")
return answer
다른 풀이 방법
def solution(record):
answer = []
namespace = {}
printer = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
for r in record:
rr = r.split(' ')
if rr[0] in ['Enter', 'Change']:
namespace[rr[1]] = rr[2]
for r in record:
if r.split(' ')[0] != 'Change':
answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])
return answer
11번줄: Enter, Leave도 사용자의 이름처럼 딕셔너리에 저장해 출력하였다.
🐥자바스크립트
function solution(record) {
var answer = [];
let userId = {};
let status = {"Enter":"님이 들어왔습니다.", "Leave":"님이 나갔습니다."};
for(let i of record){
const arr = i.split(' ');
if(arr[0] === "Enter" || arr[0] === "Change"){
userId[arr[1]] = arr[2];
}
}
for(let i of record){
const arr = i.split(' ');
if(arr[0] !== "Change"){
answer.push(userId[arr[1]]+status[arr[0]]);
}
}
return answer;
}
위 파이썬 풀이를 참고하여 Enter, Leave일 때 출력할 메시지를 딕셔너리에 담아 상황에 따라 출력했다.
다른 풀이 방법
function solution(record) {
const userInfo = {};
const action = [];
const stateMapping = {
'Enter': '님이 들어왔습니다.',
'Leave': '님이 나갔습니다.'
}
record.forEach((v) => {
const [state, id, nick] = v.split(' '); //nick이 존재하지 않으면 nick = undefined
if(state !== "Change") {
action.push([state, id]); //Enter,Leave와 사용자id를 함께 배열에 저장
}
if(nick) { //nick이 undefined가 아니라면 딕셔너리에 (사용자id:이름)을 추가
userInfo[id] = nick;
}
})
return action.map(([state, uid]) => {
return `${userInfo[uid]}${stateMapping[state]}`; //state, uid 딕셔너리를 이용해 상황에 알맞은 메시지를 출력한 배열을 리턴
})
}
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] [3차] 압축(2018 KAKAO BLIND RECRUITMENT/ level 2) (2) | 2023.03.11 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 롤케이크 자르기(연습문제/ level 2) (0) | 2023.03.11 |
[프로그래머스 | 파이썬 / 자바스크립트] 영어가 싫어요(코딩테스트 입문/ level 0) (0) | 2023.03.10 |
[프로그래머스 | 파이썬 / 자바스크립트] 과일 장수(연습문제/ level 1) (0) | 2023.03.05 |
[프로그래머스 | 파이썬] 더 맵게(힙(Heap)/ level 2) (0) | 2023.03.03 |
[프로그래머스 | 파이썬 / 자바스크립트] 주차 요금 계산(2022 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.03.03 |