:: 게시판
:: 이전 게시판
|
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/03/25 01:21
흐흐.. 저도 머리가 많이 굳었나 봅니다. 아뭏든 덕분에 꽤나 즐거웠습니다.
정작, 오늘 하려던 업무는 망쳐버렸지만요.. 엉엉... ㅠㅠ P.S: 아.. 결론은 트리였군요...;; 그러고보니, 저도 이번기회에 공간분할 트리 구조나 좀 더 손봐야겠습니다. 아무리 생각해도 전에 만든게 너무 무성의해서...
10/03/25 02:19
근데.. 저라면, 3번 문제에 대해서는, 대입할때... 대입한 항의 원래 값과 대입된 값의 차를 구해서,
S[n~m] 배열의 값을 일괄적으로 변경시켜주고, 합을 구할때는 1번과 같은 방식으로 계산하는 방식을 쓰겠습니다. 대입 연산이 O(N)이 되고, 합 연산은 O(1)이 되지만, 트리를 서치할때 쓰이는 나누기와 나머지 연산이 꽤나 무겁거든요... 실전에서도, O(N^2)의 알고리즘보다 O(N^3)의 알고리즘이 오히려 빠른 경우도 종종 있어요. ^^;;; 뭐, 그냥 머리속으로 생각만 해본거라, 실제 구현해보면 결과가 다를 수도 있겠죠.
10/03/25 09:00
분명히 트리가 답일 거라고는 생각했는데 어떻게 인덱싱하고 범위검색을 할지 떠오르지가 않았네요..;
(B-Tree로 인덱싱하고 범위검색하면 복잡도가 얼마였더라 고민하기도 했다는..;;) 인터벌 트리가 있었군요. (알고리즘 시간에 배워놓고 까먹었다는..)
10/03/25 09:01
저는 개발일로 밥먹고 사는 사람입니다만 답은 고사하고 문제 자체가 무슨 말인지를 모르겠습니다.
알고리즘이라는 것도 중요하긴 하지만 실제로 IT 현장에서는 알고리즘은 그렇게 중요한 부분은 아닙니다. 시스템 프로그래머나 게임, 엔진 개발자들에겐 필요한 부분이겠지만요. 일반적인 IT 현장에서는 저런 디테일 보다는 업무 분석과 DB 설계, 프레임 워크, 시스템 디자인 등이 훨씬 중요한 요소죠. 스스로 새로운 알고리즘을 고민해야 할 경우는 거의 없습니다. 태클 걸려는 건 아니고 저런 거 모르면 개발자 하면 안되는 건가 하고 좌절하실 분이 있을까 봐 드리는 말씀입니다. ^^
10/03/25 14:32
근데, 2,3,4번 문제에
preprocessing이 indexed tree를 construction 하는건데 그렇담 시간 복잡도는 O( nlogn ) 아닌가요? 링크된 문서에 따르면 "Queries require O(log n + m) time, with n being the total number of intervals and m being the number of reported results. Construction requires O(n log n) time, and storage requires O(n) space." 라고 나와있는데요.
10/03/25 14:43
그리고 azurespace님 지금이야 전공이 아니셔서 관련 과목을 안듣고 계시는걸로 알고 있는데,
대학 들어오기 전에 꽤 오랜기간동안 알고리즘이랑 자료구조에 대해 많이 공부하신걸로 알고있는데 아닌가요? "조금만 공부하면 저만큼 할 수 있어요"는 좀 어폐가 있다고 봅니다. 다시 말하자면, azurespace님 만큼의 실력을 가질려고 newbie가 지금부터 공부를 한다면 꽤 오랜 기간이 걸릴꺼라 생각합니다. 그리고 혹시나 자료구조나 알고리즘 이런곳에 관심이 있으신분들이라면 http://algospot.com 에 한번 들어와보세요(홍보글로 판단되어 짤린다면 수정을 하겠습니다.) 이곳은 제가 운영진으로 있는( 그리고 azurespace님도 활동하시는걸로 알고 있는 ^^ ) Programming 경시대회 관련 사이트인데, 아마 자료구조나 알고리즘을 열심히 공부하고싶어! 생각하시는 분들께 많이 도움이 될거라 생각합니다.
|