jiho264   2년 전

예제 모든 경우 수 vs studio에서 6으로 잘 나옵니다.

질문 게시판에 있는 모든 반례 다 집어넣어 봤습니다.

제가 부족한 점이 무엇이 있을까요? 처음엔 백 만칸 때문에 타임오버인 줄 알고 while로 받아들이는 것도 간소화 해봤습니다.

단어를 정확히 파악하기 위해 소문자로 변환하고 소문자+공백or엔터orNULL인 경우에 count++ 하게 짰습니다.

_a_ == 1

_a\n == 1

_ == 0

\n == 0

' ' (미입력) == 0

이 코드에서 들어맞지 않는 반례를 못 찾겠습니다.

minkc01   2년 전

8번째 줄에서 while문 맨 처음 조건 확인할 때 i = 0이므로 조건문이 a[-1] != 0 이 됩니다.

제 컴퓨터에서 실행시에는 이것 때문에 실행하자마자 바로 0 출력하고 종료됩니다.

minkc01   2년 전

strlen자체가 시간복잡도가 O(n)입니다.

n번 도는 for문 내에서 strlen을 호출하니 전체 시간복잡도는 O(n^2)이 됩니다.

strlen을 한 번만 호출하게 수정해보세요.

jiho264   2년 전

시간복잡도에 관한 조언 감사합니다. 

그런데 결국 관건은 반례였네요.

단어가 

{ ~~~, 'a', \n, NULL, ~~~} 식으로

~~a(엔터)인 경우를 지워야했어요.. 아이구 두야.. 감사합니다.

덕분에 짧고 빠른 코드로 성공했습니다.!!

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