처음에 작성한 코드는 다음과 같다.
하지만 시간초과가 나왔다.
중첩 for문에서 시간복잡도가 O(n^2)가 되어 오류가 난 것 같다.
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
int arr[N];
int result[N+1] = {0,};
for(int i=1; i<=N; i++)
cin >> arr[i];
for(int i=N; i>=2; i--) {
for(int j=i-1; j>=1; j--) {
if(arr[j] >= arr[i]) {
result[i] = j;
break;
}
}
}
for(int i=1; i<=N; i++)
cout << result[i] << " ";
return 0;
}
시간 복잡도 문제를 해결해야 했다.
구글링을 했더니 보통 스택으로 시간복잡도 문제를 해결했음을 알 수 있었다.
'백준' 카테고리의 다른 글
백준 1038번: 감소하는 수, c++ (0) | 2024.02.02 |
---|---|
백준 2447번: 별 찍기 - 10, c++ (0) | 2024.01.31 |
백준 1922번: 네트워크 연결, c++ (0) | 2024.01.30 |
백준 14503번: 로봇 청소기, c++ (0) | 2024.01.29 |
백준 1016번: 제곱 ㄴㄴ 수, c++ (0) | 2024.01.25 |