안녕하세요 gyub(귭)입니다 ㅎㅎㅎ 프로그래머스 Level 1 에 있는 '모의고사' 문제를 풀어봤습니다.
이번에는 설명을 주석으로 달아놨고 궁금한 점이 있으시면 댓글 달아주시면
답글로 설명해드릴게요 ㅎㅎ
https://programmers.co.kr/learn/courses/30/lessons/42840
// 각 수포자의 정해진 규칙에 의한 답
private var first = intArrayOf(1, 2, 3, 4, 5)
private val second = intArrayOf(2, 1, 2, 3, 2, 4, 2, 5)
private var third = intArrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5)
// 각 수포자 점수
private var score = IntArray(3)
// 리스트 활용을 위한 인덱스 변수
fun main() {
solution(intArrayOf(1, 2, 3, 4, 5)).forEach {
print(it)
}
}
private fun solution(answers: IntArray): IntArray {
lateinit var answer: IntArray
// 주어진 정답을 1번부터 비교
for (i in answers.indices) {
if (first[i % first.size] == answers[i]) {
score[0]++
}
if (second[i % second.size] == answers[i]) {
score[1]++
}
if (third[i % third.size] == answers[i]) {
score[2]++
}
}
// 세 명의 점수가 같을 때
if (score[0] == score[1] && score[1] == score[2]) {
// 어차피 3명 비교하는것이기 때문에 따로 sorting 하지 않고
// 하드코딩으로 입력
answer = intArrayOf(1, 2, 3)
} else {
var tmp = ArrayList<Int>()
val maxScore = max(score[0], max(score[1], score[2]))
if (maxScore == score[0]) tmp.add(1)
if (maxScore == score[1]) tmp.add(2)
if (maxScore == score[2]) tmp.add(3)
answer = tmp.toIntArray()
}
return answer
}
private fun max(x: Int, y: Int): Int {
return if (x < y) y
else x
}
봐주셔서 감사합니다!
질문이나 수정되어야 할 부분이 있다면 댓글로 남겨주세요!
반응형
'알고리즘' 카테고리의 다른 글
[ 알고리즘 / kotlin ] 최대공약수 구하기 - 유클리드 호제법 (0) | 2020.04.29 |
---|---|
[ 알고리즘 / kotlin ] 프로그래머스 lv1 체육복 (0) | 2020.04.10 |
[ 알고리즘 / kotlin ] 백준 2606 Virus (0) | 2020.04.02 |
[ 알고리즘 / kotlin ] 알고리즘 문제에 도움이 되는 코틀린 문법 1 (0) | 2020.02.28 |
[ 알고리즘 / kotlin ] 백준 11047 동전0 (0) | 2020.02.28 |