라떼는말이야

[Kotlin] 코틀린 range로 리스트 초기화 하기 본문

공부

[Kotlin] 코틀린 range로 리스트 초기화 하기

MangBaam 2021. 7. 28. 23:56
반응형

코틀린 로고

 

안드로이드 개발을 위해 코틀린을 새로 공부하면서 매일 매일 코틀린과 다른 언어의 차이점을 알아가면서 재미를 느끼고 있다.

 

현재는 계산기를 만드는 중인데 생각보다 복잡하다...

 

계산기를 만드는 과정 중 계산식의 마지막에 입력된 버튼이 숫자인지 판별해야 했다.

이때 계산식은 String 형이기 때문에 단순히 is Int 로 판별하기 힘들며 소수점도 숫자로 판별하기 위해 "."도 숫자로 판단해야 한다.

 

다양한 방법이 있겠지만 나는 리스트를 사용하기로 했다.

 

만약 코딩테스트에서 이런 문제가 나왔다고 한다면 나는 주로 파이썬을 사용하기 때문에 파이썬으로는 다음과 같이 짰을 것이다.

# 파이썬 코드
digits = [str(i) for i in range(10)].append(".")

 

파이썬은 강력한 리스트 컴프리헨션이 있기 때문에 아주 간단하게 문자열 0 ~ 9, "." 으로 이루어진 리스트를 만들 수 있다.

 

 

코틀린에서도 Range기능이 있기 때문에 방법이 있을 것이라 생각하고 구글링 해봤는데 잘 안나와서 처음에는 일단 다음과 같이 만들어 놓고 넘어갔다.

// 코틀린 코드
val digits = ListOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".")

무식한 방법이다. 만약 0~9 가 아닌 0~1000000이 필요했다면 불가능했을 것이다.

 

 

 

그래서 다양한 방법을 시도해보다가 다음 방법이 가장 괜찮게 느껴져서 아래 코드로 대체했다.

// 코틀린 코드
val digits = ((0..9).map { it -> it.toString() } + ".").toList()

0..9 는 파이썬에서 range(10)과 같은 기능을 한다.

map 메소드를 이용하면 각 요소에 식을 적용할 수 있기 때문에 각 요소를 문자열로 바꾸는데 map을 사용했다.

그리고 "."을 + 한 것을 toList 메소드로 리스트로 변환했다.

 

코틀린에는 알아두면 편리한 많은 라이브러리나 메소드가 존재하기 때문에 매일 매일 공부하며 빠르게 터득하고자 한다.

반응형
Comments