C#/프로그래머스 코딩 문제 풀이

[프로그래머스 C#] Lv.2 뒤에 있는 큰 수 찾기

ForMan_ 2024. 6. 3. 17:09

1. 문제설명

정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

2. 제한사항

● 4 ≤ numbers의 길이 ≤ 1,000,000
● 1 ≤ numbers[i] ≤ 1,000,000

3. 입출력 예시

numbers return
[2,3,3,5] [3,5,5,-1]
[9,1,5,3,6,2] [-1,5,6,6,-1,-1]

4. 나의풀이

  • 1차 시도(시간초과)
    완전탐색이라 몇 개의 테스트코드에서 시간초과로 실패하였다.
    좀 더 줄여보겠다.
public int[] solution(int[] numbers)
    {
        int[] answer = new int[numbers.Length];
        int index = 0;

        for (int i = 0; i < numbers.Length - 1; i++)
        {
            for (int k = i + 1; k < numbers.Length; k++)
            {
                if(numbers[i] < numbers[k])
                {
                    answer[index] = numbers[k];
                    break;
                }
                else if(k == numbers.Length - 1 && answer[index] == 0)
                {
                    answer[index] = -1;
                }
            }

            index++;
        }

        answer[index] = -1;

        return answer;
    }