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;
}