반응형
자세한 문제는 여기서 확인가능합니다.
0<=P<=Q<=N 일떄 array A의 A[Q]-A[P]가 가장 큰 값을 찾는 문제
fun solution(A: IntArray): Int {
if(A.size < 2) return 0
var ans = 0
var min = Int.MAX_VALUE
var minPosition = 0
for(i in 0 until A.size){
if(A[i] < min){
min = A[i]
minPosition = i
}
}
var max = 0
for(i in minPosition until A.size){
if(A[i] > max){
max = A[i]
}
}
return max - min
}
처음에는 제일 작은 값의 position을 찾고 그 position보다 큰 array A index에서 min값을 빼서 찾는 방법을 사용했습니다. 근데 결과는 77% 이유는 그냥 제일 큰 값과 제일 작은 값을 찾아서 빼서 문제가 된거 같다. (자세한 이유는 안나와서 ...)
그리고 code를 자세히 보니 한번에 섞을 수 있어서 다시 coding을 했습니다.
fun solution(A: IntArray): Int {
if(A.size < 2) return 0
var ans = 0
var min = Int.MAX_VALUE
for(i in A.indices){
if(A[i]< min){
min = A[i]
}else{
if(ans < (A[i]-min)){
ans = A[i]-min
}
}
}
return ans
}
최소값을 찾고 최소값이 아닐 경우에는 그 index 값에서 최소값을 빼서 최대 이익은 찾도록 하였습니다. 사실 위에 code의 for문 두개를 그냥 하나로 합쳤을 뿐이라 생각했는데 이번것은 100%로 이전꺼는 77%인 이유를 모르겠습니다... (아래code는 전부 빼보면서 차이의 최대값을 찾은거고 위에는 단순히 최대 값과 최소값을 찾아서 뺴기한 차이인데 말이죠..)
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Lesson10 - Peaks (0) | 2020.01.06 |
---|---|
Lesson 10 - CountFacotrs (0) | 2020.01.06 |
Lesson8 - Dominator (0) | 2020.01.06 |
Lesson7 - Brackets (0) | 2019.12.19 |
Lesson6 - Triangle (0) | 2019.12.16 |