본문 바로가기
스터디(programmers)

Kotlin] 프로그래머스 lv.1, 모의고사

by 김마리님 2023. 2. 8.

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

 

프로그래머스

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

programmers.co.kr

 

더보기

사실 완탐이라는데 완탐.. 까진 모르겠습니다

그냥 처음에는 애들 찍는 규칙 찾아서 그냥 쌩깡으로 집어넣었습니다.

 

class Solution {
    fun solution(answers: IntArray): IntArray {

        var answerCountOne = 0
        var answerCountTwo = 0
        var answerCountThree = 0

        for(i in answers.indices) {
            if(i % 5 + 1 == answers[i]) {
                answerCountOne += 1
            }

            if(i % 2 == 0 && answers[i] == 2) {
                answerCountTwo += 1
            } else {
                if((i % 8 == 1 && answers[i] == 1)
                    || (i % 8 == 3 && answers[i] == 3)
                    || (i % 8 == 5 && answers[i] == 4)
                    || (i % 8 == 7 && answers[i] == 5)) {
                    answerCountTwo += 1
                }
            }

            if(((i % 10) / 2 == 0 && answers[i] == 3)
                || ((i % 10) / 2 == 1 && answers[i] == 1)
                || ((i % 10) / 2 == 2 && answers[i] == 2)
                || ((i % 10) / 2 == 3 && answers[i] == 4)
                || ((i % 10) / 2 == 4 && answers[i] == 5)) {
                answerCountThree += 1
            }
        }

        var list = mutableListOf<Int>()
        var answer = intArrayOf(answerCountOne, answerCountTwo, answerCountThree)
        var answerSorting = answer.sortedArrayDescending()
        var max = answerSorting[0]

        for(i in answer.indices) {
            if(answer[i] == max) {
                list.add(i + 1)
            }
        }


        return list.toIntArray()
    }
}

 

알아요 마음에 안듬. 나도 안 듬..

그래서 두 번째 방법으로 배열필터링 하려고 합니다.

class Solution {
    fun solution(answers: IntArray): IntArray {
        
        var answerOne = intArrayOf(1, 2, 3, 4, 5)
        var answerTwo = intArrayOf(2, 1, 2, 3, 2, 4, 2, 5)
        var answerThree = intArrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5)

        var oneList = answers.filterIndexed { index, i ->
            i == answerOne[index % 5]
        }

        var twoList = answers.filterIndexed { index, i ->
            i == answerTwo[index % 8]
        }

        var threeList = answers.filterIndexed { index, i ->
            i == answerThree[index % 10]
        }
        
        var list = mutableListOf<Int>()
        var answer = intArrayOf(oneList.size, twoList.size, threeList.size)
        var answerSorting = answer.sortedArrayDescending()
        var max = answerSorting[0]

        for(i in answer.indices) {
            if(answer[i] == max) {
                list.add(i + 1)
            }
        }

        return list.toIntArray()
    }
}

배열 필터링을 해봤는데, 시간이 오히려 늘어나고, 메모리 용량도 더 먹는군요 ^-^ ... 

저렇게 단순무식하게 계산식 때려넣는게 최선인가 싶기도 해요.

 

반응형