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

Junyoung Park·2022년 5월 16일
0

코딩테스트

목록 보기
419/631
post-thumbnail

1. 문제 설명

오픈채팅방

2. 문제 분석

문자열 입력을 배열/딕셔너리에 기록하면서 유저 아이디에 해당하는 닉네임이 마지막으로 반영된 값을 유지하는 게 관건. 리턴하는 문자열에는 Change가 반영이 되지 않는다는 데 주의.

3. 나의 풀이

import Foundation

func solution(_ record:[String]) -> [String] {
    var result = [(String, String)]()
    var idName = [String:String]()
    
    for rec in record {
        let input = rec.split(separator: " ").map{String($0)}
        let move = input[0]
        let userId = input[1]
        result.append((userId, move))
        // 입력받은 아이디 별 move 기록
        
        if move == "Enter" || move == "Change" {
            idName[userId] = input[2]
            // Leave 제외 모두 닉네임을 가지고 있음
        }
    }
        
    var answer = [String]()
    
    for rec in result {
        let (userId, move) = (rec.0, rec.1)
        if move == "Enter" {
            answer.append("\(idName[userId]!)님이 들어왔습니다.")
        } else if move == "Leave" {
            answer.append("\(idName[userId]!)님이 나갔습니다.")
        }
        // 마지막으로 변경된 닉네임을 딕셔너리에서 꺼내 적용
        
    }
    return answer
}
profile
JUST DO IT

0개의 댓글