TIL/알고리즘 공부
프로그래머스 Lv. 2 Swift 알고리즘 - 오픈채팅방
여의도사노비
2023. 1. 11. 23:08
728x90
문제가 길어서 당황했지만 생각보다 간단했던 문제!
ID에 따른 유저의 네임을 최신 버전으로 바꿔주고 Enter / Leave 두 상황만 고려해주면 된다.
이 문제를 풀면서 생각한 논리적 흐름
- record가 일정하게 '행동 + ID + 이름'으로 이루어져있기 때문에 공백을 기준으로 원소를 구분한다.
- 원소의 개수가 2개인 경우는 Leave인 경우이며 name이 없기 때문에 제외하고 3개인 경우에만 ID 별 네임을 최신화해준다.
- 다시 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)
- 없음