[LeetCode] Min Max Game

아르당·2026년 8월 26일

LeetCode

목록 보기
488/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

인덱스가 0부터 시작하는 정수 배열 nums가 주어지고, 길이는 2의 배수이다.
nums에 다음 알고리즘을 적용해라.

  1. nums의 길이가 n이다. n == 1이라면 과정을 멈춰라. 그렇지 않으면 인덱스가 0부터 시작하고 n / 2 길이의 정수 배열 newNums를 새로 만들어라.
  2. 0 <= i < n / 2인 모든 짝수 인덱스 i에 대해, newNums[i]의 값을 min(nums[2 * i], nums[2 * i + 1])로 할당해라.
  3. 0 <= i < n / 2인 모든 홀수 인덱스 i에 대해, newNums[i]의 값을 max(nums[2 * i], nums[2 * i + 1])로 할당해라.
  4. 배열 nums를 newNums로 교체해라.
  5. 1단계부터 전체 과정을 반복해라.

알고리즘을 적용하고 nums에 남은 마지막 숫자를 반환해라.

Example

#1

Input: nums = [1, 3, 5, 2, 4, 8, 2, 2]
Output: 1
Explanation: 다음 배열은 알고리즘을 반복적으로 적용한 결과이다.
1단계: nums = [1, 5, 4, 2]
2단계: nums = [1, 4]
3단계: nums = [1]
1은 마지막에 남은 숫자라서, 1을 반환한다.

#2
Input: nums = [3]
Output: 3
Explanation: 3은 이미 마지막에 남은 숫자라서, 3을 반환한다.

Constraints

  • 1 <= nums.length <= 1024
  • 1 <= nums[i] <= 10^9
  • nums.length는 2의 배수이다.

Solved

class Solution {
    public int minMaxGame(int[] nums) {
        if(nums.length == 1){
            return nums[0];
        }

        int[] newNums = new int[nums.length / 2];
        int count = 0;
        int index = 0;

        for(int i = 0; i < nums.length - 1; i += 2){
            if(count % 2 == 0){
                newNums[index] = Math.min(nums[i], nums[i + 1]);
            }else{
                newNums[index] = Math.max(nums[i], nums[i + 1]);
            }

            count++;
            index++;
        }

        return minMaxGame(newNums);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글