jiwonn7098   8년 전

어떤 정렬 방법을 써야 시간을 맞출수가 있을까요?

도와주세요! ㅠㅇㅠ


ntopia   8년 전

일단 정렬 방법이 O(n^2) 이라 시간제한에 걸릴 것 같고요.. O(nlogn) 시간복잡도의 정렬을 공부해보세요.


그리고 swap 한 번에 구조체 대입 연산이 3번이나 일어나는데

별도의 대입연산자를 구현하지 않으면 구조체의 대입은 그냥 memcpy 같이 구현되거든요

그래서 char[50] 짜리의 메모리가 매번 copy되는것도 느린 속도에 한 몫 하겠네요.


먼저 O(nlogn) 시간복잡도의 정렬을 구현해서 내보시고

그래도 시간초과가 난다면

직접 리소스를 관리하는 코드를 작성하시거나,

문자열을 std::string 으로 관리한다음에 swap할땐 std::swap 함수를 이용하면

내부에서 알아서 별도의 메모리복사 없이 리소스를 교체해주기 때문에 빨라질거에요.

jiwonn7098   8년 전

우선 답변해주셔서 정말정말 감사합니다!

빅오 시간복잡도도 std:: 함수도 ... 처음 들어보는 말이네요... ㅠㅠ 이럴수가

아직 많이 부족하다는 생각이 드네요...흐엉..ㅠㅠ

다시 공부해서 풀어보겠습니다! ! ♬

jiwonn7098   8년 전

그런데 혹시 관련해서 시간복잡도와 알고리즘 관련해서 볼 만한 책이 있을까요?

ntopia   8년 전

보통 JM북 또는 하얀책 이라고 불리는

http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=...

요걸 제일 많이 볼거에요.


아니면 좀 얇은 책으로는

http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=...

이런게 있는데, 저희 학교 알고리즘 수업 교재에요 [...]

책이 얇아서 공부를 시작할 때 가볍게 볼만한 책인 것 같습니다.

jiwonn7098   8년 전

아 감사합니다! ! 이 책은 어디선가 본적이 있는것 같네요... ㅎㅎㅎㅎ

알고리즘에 흥미를 붙인지 얼마 되지 않아서 아직 모르는게 많아요... ^-^

재밌게 읽겠습니다 *_*

댓글을 작성하려면 로그인해야 합니다.