TIL/알고리즘 공부

프로그래머스 Lv. 2 Swift 알고리즘 - 오픈채팅방

여의도사노비 2023. 1. 11. 23:08
728x90

문제가 길어서 당황했지만 생각보다 간단했던 문제!

 

ID에 따른 유저의 네임을 최신 버전으로 바꿔주고 Enter / Leave 두 상황만 고려해주면 된다.

 

 

 

이 문제를 풀면서 생각한 논리적 흐름

  1. record가 일정하게 '행동 + ID + 이름'으로 이루어져있기 때문에 공백을 기준으로 원소를 구분한다.
  2. 원소의 개수가 2개인 경우는 Leave인 경우이며 name이 없기 때문에 제외하고 3개인 경우에만 ID 별 네임을 최신화해준다.
  3. 다시 record에 있는 원소 순서대로 앞 부분이 Enter이면 들어왔습니다 / Leave이면 나갔습니다 두 가지 경우로 나누어 프린트한다.

 

 

* 코드

import Foundation

func solution(_ record:[String]) -> [String] {
    var name: [String : String] = [:]
    var ans: [String] = []
    
    for i in record {
        let arr = i.components(separatedBy: " ")

        if arr.count > 2 {
            name[arr[1]] = arr[2]
        }
    }
    
    for i in record {
        let arr = i.components(separatedBy: " ")
        let name = name[arr[1]] ?? ""
        
        if arr[0] == "Enter"{
            ans.append("\(name)님이 들어왔습니다.")
        } else if arr[0] == "Leave" {
            ans.append("\(name)님이 나갔습니다.")
        }
    }
    return ans
}

 

 
 

정리(Today I Learned)

  1. 없음