greenhelix
greenhelix
greenhelix
05-09 10:23
  • 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

#20_Code Signal Arcade >> Array Maximal Adjacent Difference
Algorithm/Java

#20_Code Signal Arcade >> Array Maximal Adjacent Difference

2019. 11. 22. 12:00

Code Signal -Arcade

코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당. 

주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...

되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!


Array Maximal Adjacent Difference

연속되는 배열의 최대 차이???

 

주어진 숫자형 배열에서 인접한 양쪽의 요소들의 차이를 비교해주고, 

그 차이가 가장 큰 값을 리턴하라. 는 문제입니다. 

 

답안을 볼까요..

 

int arrayMaximalAdjacentDifference(int[] inputArray) {

    int [] gap = new int [inputArray.length-1];     

        for(int i =0 ; i<inputArray.length-1; i++) 
        {    
            gap[i] = Math.abs(inputArray[i+1] - inputArray[i]); 
        }

    int maxDiffer = 0; 

    for(int check : gap){
        maxDiffer = (check > maxDiffer ? check : maxDiffer); 
    }      
        return maxDiffer; 
}

 

일단 차이값이 여러개 나올 예정인듯하여 바로 배열을 선언해줍니다. 

그 배열의 크기는 주어진 배열 길이에서 -1 해준 값으로 넣어줍니다. 차이값을 넣을꺼니깐요.

 

반복문을 통해서 차이배열에다가 절대값 Math.abs()를 활용해서 차이값을 넣어줍니다. 

절대값으로 구하는 것은 앞에 수를 뒤에수에다가 빼주면 됩니다. *(수학시간에 배운거..?같죠?)

 

이렇게 해서 한번 테스트로 gap을 출력해보면,, 

System.out.println(Arrays.toString(gap)); 

inputArray: [2, 4, 1, 0]
Console Output: [2, 3, 1]

이런식으로 나옵니다. 

딱 차이갑만 담아져있죠? 

 

이제 마지막으로 이 갑들 중 최대값을 뽑아주면 됩니다. 

 

int maxDiffer = 0; 
    for(int check : gap){
        maxDiffer = (check > maxDiffer ? check : maxDiffer); 
    }    

먼저 차이값에서 절대값을 판단할 수 있게 변수를 선언해주고. 

반복문을 통해  gap배열에 있는 값을 하나씩 체크하여 이중 최대값을 뽑아서 리턴해주면 됩니다. 

 

끝.. 

물론, 그냥 차이값 배열에서 최대 값을 뽑아달라하면 되지만, 아시다시피 전 수듄이 ... 게다가 그게 배열에서는 자동으로 되지 않기 때문에 어렵습니다. ㅜㅜ 

 

암튼 끝

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

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

#21_Code Signal Arcade >> Is IPv4 Address  (0) 2019.11.23
#19_Code Signal Arcade >> Are Equally Strong  (0) 2019.11.21
#18_Code Signal Arcade >> Palindrome Rearranging  (0) 2019.11.20
    'Algorithm/Java' 카테고리의 다른 글
    • #22_Code Signal Arcade >> Avoid Obstacles
    • #21_Code Signal Arcade >> Is IPv4 Address
    • #19_Code Signal Arcade >> Are Equally Strong
    • #18_Code Signal Arcade >> Palindrome Rearranging
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바