728x90
반응형
programmers.co.kr/learn/courses/30/lessons/42888
안녕하세요 후르륵짭짭 입니다.
이번에돋 카카오 문제를 가져왔습니다.
그런데 카카오 문제치고는 쉽게 나온 것 같습니다.
단순하게 Hash를 사용 할 줄 아느냐를 물어보는 문제 였습니다.
** 저의 풀이 **
//0:23
func solution(_ record:[String]) -> [String] {
var dict : [String : String] = [:]
var stack : [(id : String , commend : String)] = []
for element in record {
let list = element.components(separatedBy: " ")
// print(list)
let commend = list[0]
let userid = list[1]
if commend == "Enter" || commend == "Leave"{
stack.append((userid, commend))
if commend == "Enter"{
let name = list[2]
if let _ = dict[userid] {
dict[userid] = name
}
else{
dict[userid] = name
}
}
}
else if commend == "Change" {
let name = list[2]
dict[userid] = name
}
}
var answer : [String] = []
for element in stack {
let name = dict[element.id]!
let commend = element.commend
if commend == "Enter"{
// let input = "\(name)님이 들어왔습니다."
answer.append("\(name)님이 들어왔습니다.")
}
else if commend == "Leave"{
answer.append("\(name)님이 나갔습니다.")
}
}
return answer
}
문제는 Hash에 값이 존재하냐? 존재하지 않냐가 중요한 것 같습니다.
이 문제를 보면 Enter와 Change 일 때만 입력이 세개 이고
Leave라면 입력이 두개 입니다.
그래서 그것에 대한 조건을 나눠줬습니다.
그리고 Dictionary로 중복 여부를 판단 했습니다.
for element in record {
let list = element.components(separatedBy: " ")
// print(list)
let commend = list[0]
let userid = list[1]
if commend == "Enter" || commend == "Leave"{
stack.append((userid, commend))
if commend == "Enter"{
let name = list[2]
if let _ = dict[userid] {
dict[userid] = name
}
else{
dict[userid] = name
}
}
}
else if commend == "Change" {
let name = list[2]
dict[userid] = name
}
}
그리고 마지막에 스택에 UserId와 명령을 저장하고
후에 Dictionary에서 이름을 가져오면 됩니다~!!
var answer : [String] = []
for element in stack {
let name = dict[element.id]!
let commend = element.commend
if commend == "Enter"{
// let input = "\(name)님이 들어왔습니다."
answer.append("\(name)님이 들어왔습니다.")
}
else if commend == "Leave"{
answer.append("\(name)님이 나갔습니다.")
}
}
728x90
반응형
'Xcode > Swift - Algorithm' 카테고리의 다른 글
Swift ) 프로그래머스(Lv2) - [3차] 방금 그곡 (String) (1) | 2020.09.08 |
---|---|
Swift ) 프로그래머스(Lv2) - 후보키 (DFS&Set) (0) | 2020.09.08 |
Swift ) 프로그래머스(Lv2) - [1차] 캐시 (Hash) (0) | 2020.09.07 |
Swift) 프로그래머스(Lv2) - [1차] 뉴스 클러스터링 (Hash) (0) | 2020.09.06 |
Swift ) 프로그래머스(Lv2) - 수식 최적화 (Permutation) (0) | 2020.09.04 |
댓글