이웃한 수 사이 가장 큰 점프
자바스크립트 코딩테스트 문제로 adjacent-scan 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
문제 설명
배열 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]에서는 다음 세 쌍만 확인하면 됩니다.
4와9의 차이 →59와1의 차이 →81와7의 차이 →6
이 중 최댓값은 8입니다.
풀이 방법은 간단합니다.
- 배열 길이가 1이면 바로
0을 반환합니다. - 두 번째 원소부터 끝까지 순회합니다.
- 현재 원소와 바로 앞 원소의 절대 차이를 구합니다.
- 지금까지 구한 최대 차이와 비교해 더 크면 갱신합니다.
- 순회가 끝나면 최대 차이를 반환합니다.
이 방식은 배열을 한 번만 보므로 시간 복잡도는 O(n)이고, 추가 공간도 거의 쓰지 않습니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.