작성
·
322
·
수정됨
0
제 주력 언어는 파이썬인데, 코틀린을 배우는데... 코틀린은 파이썬과 다르게 기능이 별로 없네요.
알파벳 숫자 세는 것을 아래와 같이 하려고 하는데, value+=1이 안 됩니다. 어떻게 해야 하나요?
fun solution( str : String ): Map<String, Int>{
var result = mutableMapOf<String,Int>()
for (i in 0..str.length-1){
var currLetter = str[i].toString()
//이 부분에서, 문자열을 인덱싱했으니 당연히 타입은 그대로일 줄 알았는데 Char()라고 합니다. ㄷㄷㄷㄷ 이건 왜 인가요?
if (currLetter in result.keys){
result[currLetter] = 2 /// 제가 하고 싶은 것: result[currLetter] += 1
//전체적인 틀의 문제인가 싶어서, 강제로 2를 할당시켜봤더니 이 부분은 정상적으로 작동합니다. 그런데 1을 더하는 것이 안 되네요, 자바와 파이썬 모두 가능한 것으로 알고 있는데 왜 안 될까요? 인터넷 검색을 해봐도, 딱히 +=1이 되는 것 같지는 않네요. 자바처럼 Counter()를 써야 하나요?
//혹시 몰라 아래와 같이 해보니까, 이것 또한 안 됩니다.
//둘 모두 아래와 동일한 에러가 나옵니다.
/*
Operator call corresponds to a dot-qualified call 'result[currLetter].plus(1)' which is not allowed on a nullable receiver 'result[currLetter]'.
*/
//어떻게 해야 하나요???
temp = result[currLetter]
result[currLetter] = temp +1
}
else{
result[currLetter] =1
}
}
return result
}
답변 1
0
혹시 이 질문 보시는 분들께 도움드리고자 제 글에 댓글 적어요.
result[currLetter] = result.getOrDefault(currLetter,0) +1
이렇게 하니까 되네요, 파이썬보다 비효율적입니다 ㅠㅠㅠㅠㅠ 앞으로 열심히 공부해볼게요