반응형
자세한 문제는 여기서 확인해주시면 됩니다.
문제는 N사이즈의 Int형 array에 있는 값 3개를 뽑아서 (0 ≤ P < Q < R < N)
P+Q > R
Q+R > P
P+R > Q
이 가능하면 return 1 아니면 return 0을 하는 문제입니다.
처음에는 단순히 가운데 값 3개를 골라서 가능할 경우 1 아닐 경우 0면 될 줄 알았습니다. 그 code는 다음과 같습니다.
fun solution(A: IntArray): Int {
// write your code in Kotlin
if(A.size == 0 || A.size == 1 || A.size == 2) return 0
val mid = A.size/2
A.sort()
val p = A[mid-1]
val q =A[mid]
val r = A[mid+1]
var check_1 = false
var check_2 = false
var check_3 = false
if(p+q > r){
check_1 = true
}
if(q+r > q){
check_2 = true
}
if(r+p >q){
check_3 = true
}
if(check_1 && check_2&& check_3) {
return 1
}else{
return 0
}
}
하지만 결과는 0%!
머가 문제일까 고민을 해봤는데 Int형 Array에 같은 값이 3개 있을 경우에도 가능하다는 것이 떠올라 서 그 code를 추가하였습니다
fun solution(A: IntArray): Int {
if(A.size == 0 || A.size == 1 || A.size == 2){
return 0
}
A.sort()
var count = 1
var check_num = A[0]
for(i in 1 until A.size){
if(check_num == A[i]){
count++
}else{
check_num = A[i]
}
}
if(count >= 3){
return 1
}
val mid = A.size/2
val p = A[mid-1]
val q =A[mid]
val r = A[mid+1]
var check_1 = false
var check_2 = false
var check_3 = false
if(p+q > r){
check_1 = true
}
if(q+r > q){
check_2 = true
}
if(r+p >q){
check_3 = true
}
if(check_1 && check_2&& check_3) {
return 1
}else{
return 0
}
}
하지만 그 결과는 ... 75% ... 머가 문제일까 계속 고민을 하다 머가 문제일까 해서 결과에 나온 문제점을 확인 해봤더니 음수에 대한 처리를 안했었습니다.
그래서 그에 관련된 처리를 했습니다. 모든 값이 음수일 경우 사실 멀 해도 위의 조건은 만족 시킬 수 없기 때문에 모든 값이 음수일 경우에는 return 0을 하면 됩니다.
fun solution(A: IntArray): Int {
if(A.size == 0 || A.size == 1 || A.size == 2){
return 0
}
A.sort()
if(A[A.size-1] <0){
return 0
}
var count = 1
var check_num = A[0]
for(i in 1 until A.size){
if(check_num == A[i]){
count++
}else{
check_num = A[i]
}
}
if(count >= 3){
return 1
}
val mid = A.size/2
val p = A[mid-1]
val q =A[mid]
val r = A[mid+1]
var check_1 = false
var check_2 = false
var check_3 = false
if(p+q > r){
check_1 = true
}
if(q+r > q){
check_2 = true
}
if(r+p >q){
check_3 = true
}
if(check_1 && check_2&& check_3) {
return 1
}else{
return 0
}
}
이렇게 했을 때 결과가 100%가 나왔습니다.
근데 이게 생각해보면 이상한게 제 알고리즘에 문제점은 음수 양수가 섞여있을 때 제대로 동작하지 않을 텐데... 이게 100%라니 codility도 정해진 예에 대한 결과만 제대로 나오면 100%가 되는 것을 알 수 있엇습니다.
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Lesson8 - Dominator (0) | 2020.01.06 |
---|---|
Lesson7 - Brackets (0) | 2019.12.19 |
Lesson 6 - Distinct (0) | 2019.12.14 |
Lesson6 - MaxProductOfThree (0) | 2019.12.13 |
Lesson5 - CountDiv (0) | 2019.12.13 |