반응형
자세한 문제는 여기서 확인하시면 됩니다.
이 문제는 array에서 과반수 이상을 차지하는 숫자를 찾아서 그 숫자의 array 위치중 1개를 반환하는 문제입니다.
첫번째 풀이는
fun solution(A: Array<Int>): Int {
val B = A.copyOf()
B.sort()
var checkNum = A[0]
var count = 1
var value = -1
for (i in 1 until A.size) {
if (checkNum == B[i]) {
count++
} else {
checkNum = B[i]
count = 1
}
if (count > (B.size / 2)) {
value = checkNum
}
}
if (value != -1) {
for (i in A.indices) {
if (A[i] == value) {
return i
}
}
}
return -1
}
sort를 해서 과반수넘는 값을 찾고 그 값의 위치를 반환하였습니다. 그리고 결과는 83% 이유는 빈 array였을 경우와 1개 일 경우에 대한 처리가 없어서 그래서 다시 coding한 결과는
fun solution(A: IntArray): Int {
if(A.isEmpty()) return -1
val B = A.copyOf()
B.sort()
var checkNum = A[0]
var count = 0
var value = -1
for (i in 0 until A.size) {
if (checkNum == B[i]) {
count++
} else {
checkNum = B[i]
count = 1
}
if (count > (B.size / 2)) {
value = checkNum
}
}
if (value != -1) {
for (i in A.indices) {
if (A[i] == value) {
return i
}
}
}
return -1
}
이렇게 for문을 1부터가 아닌 0부터 체크하도록 하여 변경 하였더니 100%가 되었습니다.
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Lesson 10 - CountFacotrs (0) | 2020.01.06 |
---|---|
Lesson 9 - MaxProfit (0) | 2020.01.06 |
Lesson7 - Brackets (0) | 2019.12.19 |
Lesson6 - Triangle (0) | 2019.12.16 |
Lesson 6 - Distinct (0) | 2019.12.14 |