나의 기록, 현진록

[Swift] 프로그래머스 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방 본문

Programming/Algorithm & Data Structure

[Swift] 프로그래머스 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방

guswlsdk 2022. 5. 17. 11:57
반응형

 

 

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

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

programmers.co.kr

문제풀이

command는 Enter, Leave, Change 세 가지를 의미한다.

 

1. command와 Id를 sequence 배열에 저장하며 동시에 Id와 nickName을 딕셔너리로 저장

2. 1번 과정이 끝나면 sequence에 command와 Id에 해당하는 딕셔너리 값을 조합하여 배열에 저장한다.

 

 

코드

 

import Foundation

func solution(_ record:[String]) -> [String] {
    var sequence = [[String]]()
    var users = [String:String]()
    var result = [String]()
    for i in record{
        let str = i.split(separator: " ")
        var command = ""
        var userId = ""
        var name = ""
        
        if str.count == 2{
            command = String(str[0])
            userId = String(str[1])
            sequence.append([command,userId])
        }else if str.count == 3{
            command = String(str[0])
            userId = String(str[1])
            name = String(str[2])
            users[userId] = name
            sequence.append([command,userId])
        }
    }
    for i in sequence{
        let nickName = users[i[1]] ?? ""
        
        
        if i[0] == "Enter"{
            result.append("\(nickName)님이 들어왔습니다.")
        }else if i[0] == "Leave"{
            result.append("\(nickName)님이 나갔습니다.")
        }
    }
    return result
}
반응형