:: 게시판
:: 이전 게시판
|
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/03/24 19:03
1. O(n)만큼의 메모리와 연산을 미리 사용할 수 있다면
배열 B[n] 선언하고 B[0] = A[0] for i = 1 to n-1 : B[i] = B[i-1]+A[i] 로 배열 B에 배열 A의 Sigma Sum을 저장하면 입력이 들어오면 A[first] + ... + A[last] = B[last]-B[first-1] 을 이용하여서 O(cntQuery)에 계산 가능하군요. 2. 단순히 보기에는 O(n*cntQuery).. 2번부터는 더 좋은 방법이 있을지 고민을..끄응-
10/03/24 19:40
이리 저리 좀 생각해보긴 했는데 전부 binary search를 이리저리 뒤튼 방법 말고는 잘 안 떠오르는군요. 알고리즘을 좋아는 하지만 잘 하지는 못해서 슬픕니다.
10/03/24 19:52
생각해보니 현직 프로그래머들은 이 글을 보려면 최소한 12시는 되어야겠군요. 틀림없이 야근이 있을테니까. 해답편은 내일 중에 올리겠습니다.
10/03/24 20:01
3, 4 번의 경우에는 배열의 값이 변해버리는군요. 근데, first가 음수일때는 대입만 합니까?
이런 경우에는 cntQuery와 복잡도가 비례하지 않게 될 듯 한데... 최적의 알고리즘은 좀 고민해봐야겠네요. ^^; 근데, 나 일 빨리 끝내고 퇴근해야 할텐데, 무슨짓이지...;;
10/03/24 20:02
이제막 학부생으로 자료구조를 배우기 시작한 저로서는 이해하기힘든 문제들이군요.;;;;;
시간복잡도의 개념을 이틀전에 배워서..;;;; 어렵군요
10/03/24 20:05
1번은 O( n * (n - 1) / 2 ) 만큼의 추가 메모리와 Preprocessing이 가능하면 O(1)으로도 되네요. (n ^ 2 보다 작으니 유효!!)
나머지 문제들도 마찬가지로 O(1)이 될거 같네요. 다만 O( n * (n - 1) / 2 ) 을 인정 못하신다면 시 to the 망....
10/03/24 20:32
번역체네요. 이런 표현들을 보면 "그냥 영어원문으로 문제를 내주시죠."라는 소리가 목까지 올라오고는합니다.
문제를 인지하기 위해 영어로 역번역해서 이해해야한다고 할까요?
10/03/24 20:43
야근중인데 일 안합니다 ^^
3번이요 first < 0 이면 A[-first] + A[-(first + 1)] + ... + A[0] + ... + A[last - 1] + A[last]라는 거죠? 그런데 A[-first] = last이면 A[-(first + n)]도 last인건지 아니면 A[-(first + n)] = last - n인지 모르겠습니다.
10/03/24 21:29
1번은 O(N) pre-processing에 O(CntQuery), 2 3 4번은 O(N) pre-processing에 각 O(CntQuery * lg N) 정도까지는 쉽게 가능..하지만 의도하신 풀이는 이건 아니었을 것 같고.. 궁금하네요. 2번 O(1)이 있다고 들은 것 같기도 하고... =_= 아흑!!
10/03/24 23:15
인덱스 트리를 구성해서 잘 하면 될거 같네요
최대값 구하는것도 비슷한 원리로.. 값 변하는건 역시 완전 이진 트리니깐 lg n 정도면 될듯 하고.. 그냥 대강 보면 이런데 어떤 함정이 있을지..크크
|