본문 바로가기
카테고리 없음

내일배움캠프 3주차 3일차 코틀린심화 문제풀이 ++(코틀린 배열뒤집기)

by 시계속세상은아직돌아가는중 2023. 7. 26.

https://school.programmers.co.kr/learn/courses/30/lessons/120821

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이번에 풀어본 문제는 간단한 배열 뒤집기 문제이다.

 

fun main(){
    var arr = arrayOf(0,1,2,3,4)
    val arrIndex = arr.size -1

    print("현재 배열의 값은:")
    for(i in 0..arrIndex){
        kotlin.io.print(" ${arr[i]}")
    }
    println("")

    for(i in 0..arr.size /2){
        var change = arr[i]
        arr[i] = arr[arrIndex-i]
        arr[arrIndex-i] = change
    }
    print("현재 배열의 값은:")
    for(i in 0..arrIndex){
        kotlin.io.print(" ${arr[i]}")
    }

}

해당 기능 구현 및 확인차에 만든 코드이며 매우 간단한 로직을 가진다.

arr.size로 해당 배열의 크기를 구하고(arr는 0,1,2,3,4 총 5개의 요소를 가지므로 size는 5다)

해당 사이즈를 구한 이유는 Index값을 손쉽게 설정하기 위해서다.

인덱스는 0부터 시작하므로 size-1을 해주면 인덱스 값을 찾기 쉬워진다.

 

arr[i] = arr[arrIndex-i]

 

에서 Index값에 -i를 해주는 이유는 이러하다

 

i가 0일 때

arr[0] = 0이고

arr[arrIndex(arr.szie-1 = 5=1 =4)-0] = arr[4]

 

arr[0] = arr[4] 로 바뀌며

arr[4] = change //arr[0]으로 해주므로써 arr[0]에 arr[4]로 변환한 값을 저장해준다.

 

for(i in 0..arr.size /2)

를 살펴보자면 이러한 행위를 사이즈의 절반만큼만 해준다.

 

왜냐하면 이를 절반이 아닌 전체로 돌리게 된다면 결국에는 뒤집은 배열을 한 번 더 뒤집게 되어 원래의 배열로 돌아오기 때문이다.

 

프로그래머스 정답

class Solution {
    fun solution(num_list: IntArray): IntArray {
        val arrIndex = num_list.size - 1
        for (i in 0..num_list.size / 2) {
            val reverse = num_list[i]
            num_list[i] = num_list[arrIndex - i]
            num_list[arrIndex - i] = reverse
        }
        return num_list
    }
}

 

https://notepad96.tistory.com/83

 

Kotlin find, findLast - 특정 원소 찾기(탐색)

1. find, findLast find, findLast 함수는 조건의 일치하는 원소를 찾을 때 사용할 수 있다. filter 함수가 조건의 일치하는 원소를 전부 찾았다면 find : 탐색을 앞에서부터 시작하여 만족하는 원소가 있다

notepad96.tistory.com

https://zerogdev.blogspot.com/2019/07/kotlin-filter-map-all-any-count-find.html