7578번 - 공장
일단 저같은경우는
5 132 392 311 351 231 392 351 132 311 231
와 같이 입력이 들어올시
배열에다가 3 1 4 2 5 를 저장해두어서 1칸부터 N번쨰칸까지 돌면서
i 칸검사시 i+1 칸부터 N 번쨰 칸까지 검사를 해서 i 칸의 값보다 작은 값들의 개수의 합을 구하는 방식으로 했는데요
각 구간에대한 최댓값을 기준으로 segment 트리를 작성한 이후에 재귀함수를 이용해서 해당구간의 최댓값이 비교하고자 하는 값보다 작을 시 답을 증가시키는 방향을 썻는데 시간초과가 나네요 ㅠㅠ 어디가 문제인걸까요..ㅠㅠ
get 함수에 들어갔을 때 18번째 줄의 조건을 만족하면 반드시 리턴이 이루어져야 하는데, 19, 23번째 줄의 조건이 모두 만족되지 않을 시 다시 양방향으로 탐색을 들어가기 때문에 O(log(N)) 보장이 되지 ㅇ낳습니다.
아하 .... 감사합니다 동문선배님 ...ㅠ
댓글을 작성하려면 로그인해야 합니다.
aza1200 4년 전
일단 저같은경우는
와 같이 입력이 들어올시
배열에다가 3 1 4 2 5 를 저장해두어서 1칸부터 N번쨰칸까지 돌면서
i 칸검사시 i+1 칸부터 N 번쨰 칸까지 검사를 해서 i 칸의 값보다 작은 값들의 개수의 합을 구하는 방식으로 했는데요
각 구간에대한 최댓값을 기준으로 segment 트리를 작성한 이후에 재귀함수를 이용해서 해당구간의 최댓값이 비교하고자 하는 값보다 작을 시 답을 증가시키는 방향을 썻는데 시간초과가 나네요 ㅠㅠ 어디가 문제인걸까요..ㅠㅠ