이제부터는 문제가 너무 길면 생략해서 적으려고 한다.
생각보다 간단하게 풀 수 있는 문제인거 같다.
import Foundation
func solution(_ record: [String]) -> [String] {
var nickname: [String : String] = [:]
var result: [String] = []
let suffixs = ["님이 들어왔습니다.", "님이 나갔습니다."]
for sentence in record{
let temp = sentence.components(separatedBy: [" "])
if temp[0] == "Enter" || temp[0] == "Change"{
nickname[temp[1]] = temp[2]
}
}
for sentence in record {
let temp = sentence.components(separatedBy: [" "])
if temp[0] == "Enter" {
result.append(nickname[temp[1]]! + suffixs[0])
} else if temp[0] == "Leave" {
result.append(nickname[temp[1]]! + suffixs[1])
}
}
return result
}
딕셔너리와 빈배열을 준비하고 상황에 맞는 문장들을 출력하기 위해 미리 준비해둔 문장들을 배열에 넣어 준비했다.
그 후, for문으로 들어오는 문자열을 분리하여 원하는 단어 (Enter, Change, Leave)가 있는지 확인 한 후 딕셔너리에 uid를 Key로 지정하고 Value로 닉네임을 할당했다.
그 다음으로 다시 한번 for문으로 record에서 말하는 순서로 미리 만들어놓은 문장들에 붙여 새로운 문자열 배열을 구성하였다. 이렇게 만들어진 문자열을 리턴하고 종료
문제를 풀고 보니 대다수의 사람들은 고급문법을 사용해 푼거 같던데.. 클로저를 능숙하게 다루는 수준에서 코테를 시작하는건가 싶다.