>알고리즘 문제
1. MutableList 활용
1)선언(주로 쓰는것 위주로)
val mulist = MutableList<Int>(5, { i -> i})
val mulist = mutableListOf(10, 20, 30)
val mulist = mutableListOf<Int>()
2)활용이유: list와는 달리 가변적. 순서대로 사용되는 숫자인덱스가 포함된 문제에서 활용하기 쉬움
2.StringBulilder()
1)선언: val sb=StringBuilder()
2)사용 이유:
-여러번 수정이 필요한 문자열이 있는 경우 StringBuilder를 활용하는것이 실행시간이 아껴짐
-append이용시 자료형 상관없이 추가가능
3)수정
-.append()
-.deleteCharAt(index)//인덱스위치의 문자삭제
-.delete(start,end)//start이상 end미만 인덱스 문자 삭제
-.length//길이 반환
-.reverse//거꾸로 뒤집기
-insert(index,value)//인덱스 위치에 값을 넣음(append의 위치지정 버전)
4)String으로 사용: .toString()사용시 문자열로 바뀜
3. 기타 문자열 활용 함수들
-joinToString(): 문자나 문자열로 이루어진 배열의 원소들을 이어붙여 하나의 문자열로 만들음
-replace(a,b): a,b는 문자열. a를 모두 b로 바꿈
-sortedArray(), sortedArrayDescending(): 배열 정렬
-toCharArray():문자열을 문자 배열로 변환. 정렬같은거에 사
4. 아스키 코드
1)변환: 문자<ㅡ>숫자간 변환시 toInt(),toChar()사용하면 아스키 코드값으로 바뀌므로 유의해야함
=>단 toString은 그대로 바뀜
2)값: '0'의 아스키코드값은 48, 'a'의 아스키 코드값은 97
@알고리즘 풀며 느낀점
-문자열 수정이 잦은 경우 StringBuilder를 활용해 실행시간을 단축해야겠다.
-예시에서는 정렬된 제시값이 나와있다고 실제로 정렬된 값만 주어지는 것이 아니라는 것을 유의해야겠다.
>코틀린 문법
클래스 종류
1. 데이터 클래스
1)선언: 앞에 data를 붙여 선언
2)예시
data class DC(val a:String){
lateinit var b: String
constructor(a:String, b:String):this(a){
this.b=b
}
}
3)비교:
-.equals() 로 비교
-단, 주생성자의 변수 멤버만 보고 동일 여부를 판별함
-예시
val obj1=DC("A","B")
val obj2=DC("A","C")
println(${obj1.equals(obj2)}) //true
//주생성자 변수 멤버는 "A"부분만 해당되므로 두 오브젝트는 같다
4)toString()
-데이터 타입이 아닌 클래스와는 달리 데이터 클래스의 경우 toString()을 붙이면 멤버 변수 데이터 출력 가능
-예시: data.toString()
2. 오브젝트 클래스
1)목적: 익명(anonymous)클래스 생성을 위해 존재
2)사용법
-클래스 이름이 없으므로 선언과 동시에 생성해야함
-object 키워드 사용
-예시
val obj= object{
var data = 10
fun some(){
println("data : $data")
}
}
//이 경우엔 obj가 타입명시를 안해서 Any타입으로 선언됨.
//즉 멤버인 data나 some에 접근하려할 시 "오류"
=>다른 클래스나 인터페이스를 타입으로 선언하여 하위클래스나 인터페이스를 구현한 클래스로 선언가능
open class Super{
open var data=10
open fun some(){
println("i am super some(): $data")
}
}
val obj = object: Super(){
override var data = 20
override fun some(){
println("i am object some(): $data")
}
}
fun main(){
obj.data=30 //성공
obj.some() //성공
}
3. 컴페니언 클래스
1)특징
-객체 생성없이 클래스 이름으로 멤버 접근 가능
-객체 생성해도 객체로는 멤버 접근 불가능
-companion object 키워드 사용
2)예시
class cL{
companion object{
var data=20
}
var o=10
}
fun main() {
val obj=cL()
obj.o=10 //성공
cL.o=10 //오류
println(obj.data)//오류
println(cL.data) //성공
}
=>companion object 중괄호 내의 멤버는 클래스 명으로만, 그 외는 생성된 객체로만 접근가능
'코틀린-안드로이드' 카테고리의 다른 글
7일차)알고리즘 문제(대충 만든 자판), git&github-1회차 (0) | 2024.05.29 |
---|---|
6일차)알고리즘 문제(문자열 나누기) (0) | 2024.05.28 |
4일차)코틀린 문법 - 4 (0) | 2024.05.16 |
3일차) 코틀린 문법-3 (0) | 2024.04.05 |
2일차)코틀린 문법-2 (0) | 2024.04.04 |