코딩테스트

Swift - 오픈채팅방(프로그래머스, Lv2)

택꽁이 2022. 4. 12. 17:59
728x90

 

 

 

 

func solution(_ record:[String]) -> [String] {
    
    var nickname = [String : String]()
    var result = [String]()
    
    enum printScript: String {
        case Enter = "님이 들어왔습니다."
        case Leave = "님이 나갔습니다."
    }
    
    let recordAry = record.map{ $0 }
    
    // 닉네임 Dic 업데이트
    recordAry.forEach{
        let sen = $0.components(separatedBy: " ")
        if sen.count == 3 {
            nickname.updateValue(sen[2], forKey: sen[1])
        }
    }
    
// record 순서대로 메세지 출력
    recordAry.filter{ !$0.contains("Change")}.forEach{
        let sen = $0.components(separatedBy: " ")

        switch sen[0] {
        case "Enter" :
            let resultSen = "\(nickname[sen[1]]!)" + printScript.Enter.rawValue
            result.append(resultSen)

        case "Leave" :
            let resultSen = "\(nickname[sen[1]]!)" + printScript.Leave.rawValue
            result.append(resultSen)
                        
        default:
            break
        }
    }
    
    return result
}

 

 닉네임을 업데이트 한 후 최종 업데이트 된 Dictionary를 가지고 주어진 record를 따라 문자열 출력