Logo
(追記) (追記ここまで)

문제를 해결했는데 메모리와 시간이 비효율적이에요

11478번 - 서로 다른 부분 문자열의 개수

다음과 같이 코드를 작성해서 해결했는데 메모리는 212172KB로 잡히고 시간은 692ms로 잡혀서 더 효율적으로 푸는 방법이 있을까요..?

이 문제의 의도는 저렇게 푸는게 맞습니다.

더 빠르고 메모리를 적게 사용하면서 풀기 위해서는 접미사 배열이란것을 써먹어야 하는데, 난이도가 꽤나 높습니다.

이 문제의 강화판인 11479번: 서로 다른 부분 문자열의 개수 2가 있습니다.

감사합니다 선생님들 문제의 의도가 이게 맞았군요.... 문제풀면서 메모리가 크게 잡힌건 처음봐서 당황했었거든요..ᅲᅲᅲ
열심히 공부해서 잘 풀어보겠습니다 감사합니다

길이가 다르면 무조건 다른 문자열이니, 같은 길이인 부분 문자열들만 set에 담았다가 비우기를 반복하면 메모리와 시간을 더 줄일 수 있습니다(https://www.acmicpc.net/source/69718072). 빅오-표기법 상의 시간복잡도는 그대로지만 상수가 작아집니다.

하나 여담인데, std::cin >> 은 이미 웬만한 타입에 대해 오버로딩이 되어 있어서 Insert_Input 같은 템플릿 함수를 굳이 만들 필요는 없습니다.

아 Insert_Input은 stl에서 데이터 삽입할 때 입력값을 넣어야 한다면 vecTemp.push_back(Insert_Input<string>()); 으로 깔끔하게 한줄로 할수 있어서 만들어봤어요..ᄏᄏᄏ

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

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /