이웃한 수 사이 가장 큰 점프

자바스크립트 코딩테스트 문제로 adjacent-scan 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy adjacent-scan 함수명: solution 제한 시간: 200ms

문제 설명

배열 nums가 주어질 때, 서로 이웃한 두 수 사이의 절대 차이 중 가장 큰 값을 반환하는 solution 함수를 작성하세요.

예를 들어 nums = [4, 9, 1, 7]이라면 이웃한 차이는 각각 5, 8, 6이므로 정답은 8입니다.

제한사항

  • nums의 길이는 1 이상 100,000 이하입니다.
  • 각 원소는 -1,000,000 이상 1,000,000 이하의 정수입니다.
  • 절대 차이는 항상 0 이상의 정수입니다.
  • 원소가 1개뿐이면 비교할 이웃이 없으므로 0을 반환합니다.

예시

  • 입력: [4, 9, 1, 7] → 출력: 8
  • 입력: [5] → 출력: 0
  • 입력: [-3, -8, 2, 2] → 출력: 10

힌트

  • 모든 두 수의 차이를 구할 필요는 없습니다.
  • nums[i]nums[i - 1]만 비교하면서 현재까지의 최대값을 갱신해 보세요.
  • 음수가 있어도 절대값을 사용하면 됩니다.

해설

이 문제에서 중요한 점은 모든 쌍을 비교하는 것이 아니라, 바로 옆에 붙어 있는 두 수만 본다는 것입니다.

예를 들어 [4, 9, 1, 7]에서는 다음 세 쌍만 확인하면 됩니다.

  • 49의 차이 → 5
  • 91의 차이 → 8
  • 17의 차이 → 6

이 중 최댓값은 8입니다.

풀이 방법은 간단합니다.

  1. 배열 길이가 1이면 바로 0을 반환합니다.
  2. 두 번째 원소부터 끝까지 순회합니다.
  3. 현재 원소와 바로 앞 원소의 절대 차이를 구합니다.
  4. 지금까지 구한 최대 차이와 비교해 더 크면 갱신합니다.
  5. 순회가 끝나면 최대 차이를 반환합니다.

이 방식은 배열을 한 번만 보므로 시간 복잡도는 O(n)이고, 추가 공간도 거의 쓰지 않습니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.