Kotlin 사전캠프 TIL 6일차

노재원·2024년 3월 26일
0

내일배움캠프

목록 보기
6/90

학교 시절 회상하기

웹 강의를 듣고 있으면 한 시도 빠짐없이 학교 시절의 경험이 떠오른다. 다만 대체로 아쉬웠던 경험을 떠올리긴 한다.

  • 아 이거 복잡해서 옆 자리 친구한테 물어봐도 이해 못했었는데
  • 이거는 문법이 너무 복잡해서 복붙 아니면 작성도 못했었는데
  • 부트스트랩 어떤 애가 쓰는거 보고 진짜 개발 잘해보여서 부러웠는데

이 때의 나는 시험에 나오는 C언어 문제를 보고 정답을 찾는 데에나 자신 있는 쌩초짜였고 웹 시간에는 id, tag, class, style이니 뭐니 보기만 해도 어지러운 용어들에 추가로 CSS에서 온갖 속성들이 쏟아져나오니 포기했던 것 같은데 결국 일 하다보면 다 배우게 되어 있었다.
학교에서 이걸 알았으면 조금 더 열심히 공부했을 텐데 싶다가도 어차피 뭐든 잘 못알아먹던 시절이라 똑같을까 싶다.

학교에서 진행한 방식은 지금 듣는 강의와 달리 태그, 속성등을 하나하나 짚어가며 역사, 배경, 용도, 변형등을 적용해 예제를 계속 푸는 식이었는데 캠프 강의는 속성으로 따라서 코딩해보면 그럴싸한 결과물이 나오니 여러 영역에서 시험 문제를 내야하는 학교와 커리큘럼이 다르긴 하구나 생각이 들었다. 나도 학교 때 이렇게 결과물부터 뽑고 봤으면 흥미가 더 붙었었을까?

어쨌든 강의를 보며 Bootstrap의 요소를 가져와서 적용하고 그나마 친숙했던 Javascript와 JQuery까지 오랜만에 보니 학생때 느꼈던 벽을 많이 부순 것 같다.

아무쪼록 지금 같이 내일배움캠프를 진행하시는 동기분들은 나처럼 어지러워하지 마시고 포기하는 일 없이 승승장구해서 뛰어난 개발자가 되셨으면 좋겠다.


그리고 웹 개발 관련 용어 설명하기 2탄도 노션에 준비했는데 우리 주변에서 찾기 쉬운 비유를 늘리고 어렵거나 이상한 예제를 솎아내다 보면 일할 때는 그냥 시큰둥하게 넘어갔던 개발 지식들을 쌓는데에 꽤 도움이 되고 있다.

물론 그냥 구글링만으로는 똑같이 시큰둥했을 것 같고 지금은 징그러울 정도로 chatGPT에 꼬치꼬치 캐물으며 더블 체크를 진행하는게 도움이 되는 것 같다. 내가 일할 때도 chatGPT가 있었다면 발생하는 모든 의문을 프롬포트에 적느라 시간이 다 가지 않았을까?


제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

문제 링크

fun solution(arr: IntArray): IntArray {
        var list = arr.toMutableList()
        
        return when {
            list.count() == 0 -> intArrayOf()
            list.count() == 1 -> intArrayOf(-1)
            else -> { 
                list.removeAt(list.indexOf(list.minOrNull()))
                list.toIntArray()
            }
        }
    }

알고리즘 문제는 강의를 듣느라 최근엔 딱 한 문제만 풀면서 그냥 두뇌 자극을 하고 있다.

맨 처음 solution을 작성할 때 생각없이 sort를 진행하고 마지막 원소를 제거하려고 했는데 다행히 작성 전에 틀렸다는 걸 깨달아서 급하게 removeAt을 채용해서 문제를 해결했다.
(지난 번에 기억 속에서 꺼내온 when을 굳이 채택한 건 덤이다.)

이번에도 번뜩이는 해결법이 있을지 제출 후 다른 풀이를 찾아봤는데 최근엔 뛰어난 풀이를 보고 내 생각이랑 비교하는게 재밌는 것 같다.

fun solution(arr: IntArray): IntArray = if(arr.size == 1) arrayOf(-1).toIntArray() 
                                            else arr.filter { it != arr.min() }.toIntArray()

접근은 비슷하다고 느꼈지만 MutableList 로 묶지도 않았고 filter를 통한 연쇄 호출로 추가 변수와 반환이 없는 removeAt 을 사용하느라 괄호가 꽤 중첩된 내 풀이보다 간결한 풀이였다. minOrNull 을 잘 써놓고 굳이 removeAt 을 통해서 제거하려고 한게 아쉬운 미스였다고 생각한다.

0개의 댓글