ABOUT ME

Swift /Flutter 를 다루는 앱 개발자의 블로그 하지만 웨이트에 진심

Today
Yesterday
Total
  • [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
    }
    
    반응형

    댓글

Designed by Tistory.