greenhelix
greenhelix
greenhelix
05-09 03:00
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#06_CS Arcade Kotlin >> Make Array Consecutive 2
Algorithm/Kotlin

#06_CS Arcade Kotlin >> Make Array Consecutive 2

2020. 12. 29. 23:00

Code Signal -Arcade Kotlin

코드시그널 아케이드 코틀린 풀이

코드시그널 아케이드 Intro 자바 풀이가 끝나고 코틀린 풀이를 올리게 되었습니다. 

질문과 틀린부분은 댓글로 남겨주세요. 🎅

글을 참고 하셨다면, 공감, 하트 한번 눌러주시고 가주시면 감사하겠습니다. 🧡💚💘


주어진 배열에서 오름차순으로 나열했을때 사이사이 비어있는 숫자의 갯수를 구하여라.

1, 2, 3, 5, 8 이라면 사이에 4, 6, 7이 필요하다. 즉 3개의 수가 빠진 상태.
최대값 8 최소값 1 을 빼면 7이다. 여기서 총 있는 수의 길이 5를 빼면 2 이다.
그리고 여기에 1을 더해주면 된다.

풀이.

//코틀린
fun makeArrayConsecutive2(statues: MutableList<Int>): Int {
     var miss :Int = 0
     statues.sort()
     
     for(i in 0 until statues.size-1){
         miss += statues[i+1] - statues[i] -1 
     }
     return  miss 
}

내 방법은 일단 정렬을 해줘야 한다고 생각했다. 그리고 반복문을 통해 일일히 값이 빠진 것을 구하였다. 

순차적으로 요소를 뺐을 때 1이 아니라면 연속된 수가 아니기 때문에 그렇게 방법을 만들었다...

fun makeArrayConsecutive2(statues: MutableList<Int>): Int {
    return statues.max()!! - statues.min()!! - statues.size + 1;
}

전혀 그럴 필요가 없다. 수학적으로 보려 해야한다. 어디서 부터 어디까지의 사이값, 사이의 무언가를 찾으려면 

최대와 최소값을 구하고 그 사이에 어떠한 값을 빼면 앞뒤가 맞는지 알아보는게 더 좋다. 

코틀린은 !!으로 널값을 방지하고 max(), min()함수를 통해 간단하게 최대값을 가져올 수 있다. 

거기다가 배열의 사이즈를 빼준다면 주어진 답보다 1이 작게 나온다. 

여기서 좌절하지말고 규칙을 찾기 위해 다른 케이스도 적용해봐야 한다. 

이렇게 하다보면 1이 부족하다는 것이 보이기 때문에 +1 을 해주면 된다. 

 

 

//자바
int makeArrayConsecutive2(int[] a) {
    Arrays.sort(a);
    int n = a[a.length-1] - a[0];
    return n - a.length + 1;
}

 

 

자바의 공식도 똑같다. 표현만 약간 다를 뿐이고, 개념은 똑같다.

 

 

 

728x90
반응형
저작자표시 비영리 변경금지

'Algorithm > Kotlin' 카테고리의 다른 글

#07_CS Arcade Kotlin >> Almost Increasing Sequence  (0) 2020.12.30
#04_CS Arcade Kotlin >> Adjacent Elements Product  (0) 2020.12.23
#03_CS Arcade Kotlin >> Check Palindrome  (0) 2020.12.22
    'Algorithm/Kotlin' 카테고리의 다른 글
    • #08_CS Arcade Kotlin >> Matrix Elements Sum
    • #07_CS Arcade Kotlin >> Almost Increasing Sequence
    • #04_CS Arcade Kotlin >> Adjacent Elements Product
    • #03_CS Arcade Kotlin >> Check Palindrome
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바