7785번 - 회사에 있는 사람
각 사람마다 구조체를 만들고, 구체안에 이름(name[6])과 회사안에 있는지 없는지(in)를 나타내었습니다.
in이 1이면 있는 것이고, in이 0이면 없는 것입니다.
코드를 다 읽으실 필요 없이, 제가 구현한 시간복잡도가 NlogN인 것같은데, 왜 시간초과가 나는지 모르겠습니다...
메인 코드만 보시면,
for문으로 일단 N번 돌렸고,
각 enter()와 leave()는 안에서 이진탐색으로 이름이 있는지 없는지 확인한 후 in을 1로 바꾸거나 0으로 바꾸었습니다. 그래서 logN의 시간복잡도가 나오고,
qsort는 시간복잡도 logN으로 알고 있습니다.
각 enter, leave, qsort는 병렬적(?)이므로
전체 시간복잡도가 NlogN이 나오는 것 아닌가요??(대충 3NlogN이니깐... O(3NlogN)=NlogN)
근데 왜 시간초과가 뜨는지 모르겠습니다..
다들 해쉬를 사용하라고 하는데, 왜 해쉬를 쓰면 더 빨라지는지, 그러면 NlogN보다 더 빨라지는 것인지 궁금합니다. 다음에 이런 유사한 문제를 풀 때, 해쉬를 쓸지 다른 탐색방법을 쓸지 결정하고 싶거든요...
qsort의 시간복잡도가 평균적으로는 NlogN일 겁니다.
아 맞다 그러네요... 이런 오만한 실수를... 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
© 2026 All Rights Reserved. 주식회사 스타트링크 | 서비스 약관 | 개인정보 보호 | 결제 이용 약관 | 도움말 | 광고 문의 | 업데이트 노트 | 이슈 | TODO
한국어 | English (Beta)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
ksjb2897 7달 전 0
각 사람마다 구조체를 만들고, 구체안에 이름(name[6])과 회사안에 있는지 없는지(in)를 나타내었습니다.
in이 1이면 있는 것이고, in이 0이면 없는 것입니다.
코드를 다 읽으실 필요 없이, 제가 구현한 시간복잡도가 NlogN인 것같은데, 왜 시간초과가 나는지 모르겠습니다...
메인 코드만 보시면,
for문으로 일단 N번 돌렸고,
각 enter()와 leave()는 안에서 이진탐색으로 이름이 있는지 없는지 확인한 후 in을 1로 바꾸거나 0으로 바꾸었습니다. 그래서 logN의 시간복잡도가 나오고,
qsort는 시간복잡도 logN으로 알고 있습니다.
각 enter, leave, qsort는 병렬적(?)이므로
전체 시간복잡도가 NlogN이 나오는 것 아닌가요??(대충 3NlogN이니깐... O(3NlogN)=NlogN)
근데 왜 시간초과가 뜨는지 모르겠습니다..
다들 해쉬를 사용하라고 하는데, 왜 해쉬를 쓰면 더 빨라지는지, 그러면 NlogN보다 더 빨라지는 것인지 궁금합니다. 다음에 이런 유사한 문제를 풀 때, 해쉬를 쓸지 다른 탐색방법을 쓸지 결정하고 싶거든요...