티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

import Foundation

func solution(_ record:[String]) -> [String] {
    
    let users: [String: String] = recordToUsers(record: record)
    let messages: [String] = recordToMessages(record: record, users: users)
    return messages
}

func recordToUsers(record: [String]) -> [String: String] {
    var users = [String: String]()
    
    record.forEach {
        let strings = $0.components(separatedBy: " ")
        let order = strings[0]
        if order == "Enter" || order == "Change" {
            let uid = strings[1]
            let name = strings[2]
            users[uid] = name
        }
    }
    return users
} 
    
func recordToMessages(record: [String], users: [String: String]) -> [String] {
    let output: [String: String] = ["Enter": "님이 들어왔습니다.",
                                    "Leave": "님이 나갔습니다."]
    var messages = [String]()
    
    record.forEach {
        let strings = $0.components(separatedBy: " ")
        let order = strings[0]
        let uid = strings[1]
        if order == "Enter" || order == "Leave" {
            messages.append(users[uid]! + output[order]!)
        }
    }
    return messages
}
댓글