내 풀이가 난잡해서 다른 사람의 코드를 봐봤음 일단 내코드는
class Solution {
fun solution(record: Array<String>): Array<String> {
val answer = mutableListOf<String>()
val mutableMap = mutableMapOf<String,String>()
val mutableListOfContext = mutableListOf<mention>()
for (i in record){
val splitStrings = i.split(" ")
val uid = splitStrings[1]
if(splitStrings.size>2){
mutableMap.set(uid,splitStrings[2])
}
if(splitStrings[0]=="Enter"){
val mention = mention(uid,"E")
mutableListOfContext.add(mention)
}else if (splitStrings[0]=="Leave"){
val mention = mention(uid,"L")
mutableListOfContext.add(mention)
}
}
for (i in mutableListOfContext){
val nick = mutableMap[i.uid]
answer.add(i.message(nick!!))
}
return answer.toTypedArray()
}
class mention(var uid:String, var action:String){
fun message(nickName: String): String {
return when (action){
"E"->{
"${nickName}님이 들어왔습니다."
}else->{
"${nickName}님이 나갔습니다."
}
}
}
}
}
다른 사람의 코드를 보니까
Sequence를 사용하는 이유를 알겠다.
class Solution {
fun solution(record: Array<String>): Array<String> {
val user = mutableMapOf<String, String>()
return record
.map {
val r = it.split(" ")
val action = r.first()
when (action) {
"Enter", "Change" -> user += r[1] to r[2]
}
r
}
.asSequence()
.filter { it[0] != "Change" }
.map {
val nickName = user[it[1]]
val explanation = when (it[0]) {
"Enter" -> "님이 들어왔습니다."
"Leave" -> "님이 나갔습니다."
else -> throw IllegalArgumentException()
}
"$nickName$explanation"
}
.toList().toTypedArray()
}
}
한수 배워 갑니다.
'코딩테스트(코틀린) 기초부터 연습' 카테고리의 다른 글
20240411(프로그래머스 n+1카드, 파이썬) (0) | 2024.04.12 |
---|---|
프로그래머스 (행렬 테두리) 코틀린으로 풀기 (0) | 2021.10.01 |
프로그래머스 예상 대진표 (0) | 2021.04.21 |
프로그래머스 최소공배수.. (0) | 2021.04.21 |
프로그래머스 피보나치 (0) | 2021.04.20 |