개발/Swift

[Swift] 오픈채팅방 프로그래머스

덤벨로퍼 2022. 3. 27. 17:32

["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]

문제 해결방법

들어오고 나가면 return 배열에 값을 추가하게되는데

이때 닉네임은 마지막에 유저가 설정한 닉네임을 써야한다.

그러므로 마지막 상태의 유저 닉네임을 알고있어야 한다.

관련 정보를 먼저 dict 에 넣어준다.

//uid1234 prodo
//uid4566 ryan

그리고 나중에

enter/leave 관련한 히스토리 를 보고 uid와 최종 닉네임을 참조해서 result 배열을 만들어 리턴하면 된다.

func solution(_ record:[String]) -> [String] {
    var nicknameDict = [String:String]()
    var answer = [String]()
    
  
    for i in 0..<record.count{
        let data = record[i].split(separator: " ")
            
        if(data[0] != "Leave"){
            nicknameDict[String(data[1])] = String(data[2])
        }
  
    }
    
    for i in 0..<record.count{
        let data = record[i].split(separator: " ")
        let nickname = nicknameDict[String(data[1])]!
        if(data[0] == "Enter"){
            answer.append("\\(nickname)님이 들어왔습니다.")
        }else if(data[0] == "Leave"){
            answer.append("\\(nickname)님이 나갔습니다.")
        }
    }
    print(answer)
    return answer
}