힌트를 찾아오셨군요.
무작정 만들어 보려니 막막하기만 합니다. 지금까지 배워온 기법을 사용하면 무난히 해결할 수 있습니다만 연속적인 배열을 처리하는 방법을 알려드리지 않았습니다. 배열은 클래스의 개념을익히는 다음 객체지향 편에서 자세히 배우지만 여기서는 프로젝트를 수행할 수 있도록 간단히 알려드리겠습니다.
배열이란?
배열은 연속적인 데이터를 나열하기 위한 데이터 구조를 말합니다. 코틀린에서는 Array 클래스로 표현하고 있습니다. 클래스를 아직 몰라도 상관 없습니다. Int, String, Double... 처럼 사실 우리가 사용했던 기본 자료형들은 모두 클래였죠.
배열 만들기
배열은 arrayOf( )라는 헬퍼함수를 통해서 만들게 되는데요. 헬퍼 함수란, 손쉽게 특정 데이터를 구성하도록 도움을 주는 함수 입니다. 다음은 배열을 생성하는 예입니다.
// 정수형 배열을 선언하고 초기화 하기
val nums = arrayOf(12, 23, 52)
// 배열 요소 나타내기
println(nums[0])
println(nums[1])
println(nums[2])
// 배열 요소 다시 초기화 하기
nums[1] = 22
배열은 요소를 접근하기 위한 색인(index)가 있습니다. 이것은 대괄호 표현을 사용해 0부터 시작하는 값으로 접근할 수 있습니다. 반대로 해당 색인의 요소에 값을 다시 초기화 할 수도 있죠.
// 특정 자료형이 명시된 배열 만들기
var a: IntArray = intArrayOf(1, 2, 3)
var b: CharArray = charArrayOf('a', 'b', 'c')
// 배열의 요소 순환하며 나타내기
for (i in a) {
println(i)
}
...
배열은 특정 자료형을 명시할 수 있습니다. 자료형명ArrayOf( )와 같이 함수를 사용하면 됩니다.
만일 그냥 arrayOf( )를 사용한다면 여러가지 자료형을 복합적으로 사용할 수 있죠.
배열에서 자료를 꺼내기 위해서는 for와 같은 반복문을 이용해 나타낼 수 있습니다.
람다식 표현을 통한 초기화
물론 다음과 같이 람다식을 통한 초기화도 가능합니다.
val a = Array(5, { x -> (x * x) }) // 0, 1, 4, 9, 16
특정 자료형의 제한
다음과 같이 제네릭 <T> 표현에 자료형을 사용하면 특정 자료형으로 제한하게 됩니다.
var arr1 = Array<Int>(4, {0} )
var arr2 = Array<String>(3, {" "} )
자, 그럼 이정도의 힌트로 구현할 수 있을까요? 노력해봅시다.
comment