[Programmers] Lv.1 - 모의고사 (Kotlin)

Dohyeon Ko·2021년 10월 8일
0

Programmers

목록 보기
2/8
post-thumbnail

문제 링크

문제 링크

문제 설명

풀이 언어

Kotlin

풀이 방법

완전 탐색 문제이다. 학생 3명이 주어져 있고 학생이 선택하는 정답 역시 고정되어 있다. 입력으로 문제의 정답이 주어지고 학생이 선택한 정답과 비교하면 된다.

  • 학생이 선택하는 정답을 2차원 배열에 저장해두었다. student

  • 학생이 정답을 몇 개의 정답을 맞췄는지를 저장하는 배열을 선언했다. answerStudent

  • 첫 번째 학생부터 몇 개를 맞췄는지에 대한 탐색을 진행한다. 탐색을 진행하되 학생이 선택하는 정답이 저장된 배열의 끝에 도달한 경우 다시 배열의 첫 번째 값으로 만들어준다.

  • 이후 max() 메소드를 통해 최대 정답 수를 계산하고 3명의 정답 수와 비교한다.

  • 공동 1등이 있을 수도 있으니 sort() 메소드로 오름차순으로 정렬해준다.

  • return 값으로 넘겨줘야하는 자료형이 IntArray 이므로 형 변환을 진행한다.

결과

코드

class Solution {
    fun solution(answers: IntArray): IntArray {
        val student = arrayOf(arrayOf(1, 2, 3, 4, 5), arrayOf(2, 1, 2, 3, 2, 4, 2, 5), arrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5))
        var answerStudent = arrayOf(0, 0, 0)
        var temp = arrayListOf<Int>()
        var answer = intArrayOf()
        
        for (i in 0..2) {
            var index = 0
            var cnt = 0
            for (j in answers.indices) {
                if (answers[j] == student[i][index]) {
                    cnt += 1
                }
                if (index == student[i].size - 1) {
                    index = 0
                } else {
                    index += 1
                }
            }
            answerStudent[i] = cnt
        }
        
        val maxValue = answerStudent.max()
        
        for (i in 0..2) {
            if (maxValue == answerStudent[i]) {
                temp.add(i+1)
            }
        }
        
        temp.sort()

        answer = temp.toIntArray()
        
        return answer
    }
 
}

알게 된 점

정말 간단한 문제였는데 array랑 arrayList, intArray 차이를 제대로 몰라서 애먹었다. 이 문제 제출하자마자 바로 직접 하나 하나 비교해보면서 정리했다. 이전 게시글 참고!

Array VS ArrayList

profile
티스토리로 옮겼어요! (https://codekodo.tistory.com)

0개의 댓글