반응형
이번 문제도 여기서 확인 할 수 있습니다.
간단하게 array에서 일정 위치까지 두 파트로 나눠서 더한 값들의 차이의 절대 값중 작은 값을 return 하는 문제 입니다.
fun solution(A: IntArray): Int {
// write your code in Kotlin
var min = 1;
for(i in 1.. A.size-1){
var before = 0;
for( j in 0 .. i-1){
before = before+ A[j]
}
var after = 0;
for(k in i .. A.size-1){
after = after+A[k];
}
var ans = Math.abs(before - after)
if(min > ans){
min = ans;
}
}
return min
}
간단하게 만들어 봤습니다. 근데 7%밖에 결과가 안나와서 결과를 봤더니 문제가 많았습니다.
총체적 난국입니다. 그래서 새로 coding을 해 보았습니다.
그래서 2번째는 2중 for 문을 안쓰는 방법으로 알고리즘을 만들었습니다.
fun solution(A: IntArray): Int {
// write your code in Kotlin
var after = 0;
for(i in 0..A.size-1){
after = after+A[i];
}
var min = Integer.MAX_VALUE
var before = 0;
for(i in 1..A.size-1){
before = before + A[i-1]
after = after - A[i-1]
var ans = Math.abs(before-after)
if(min > ans){
min = ans
}
}
return min
}
우선 후반부 값을 위해 값을 다 더하고, for문을 진행하면서 하나씩 빼는 알고리즘으로 작성하였습니다. 그리고 위 code의 문제는 min을 1로 했는데, 사실 주어진 값들의 차중 제일 작은 값이 1보다 클 수도 있는데, 잘못 생각했기 때문에 Integer중 제일 큰 값인 Integer.MAX_VALUE로 작은 값을 찾아 갔습니다.
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Codility - Lesson4 FrogRiverOne (0) | 2019.11.14 |
---|---|
Codility - Lesson 4 PermCheck (0) | 2019.11.12 |
Codility - Lesson3 PermMissingElem (0) | 2019.11.08 |
Codility - Lesson 3 FrogJmp (0) | 2019.11.07 |
Codility - Lesson 2 Cyclic Rotation (0) | 2019.11.06 |