본문 바로가기
728x90
반응형

분류 전체보기188

빠른 문자열 복사 C언어로 문자열 복사 및 붙여넣기시, 다른 언어들과 다르게 +=을 사용할 수 없습니다. 이런 경우 C언어를 배우게 되면서 학습한 strcpy나 strcat을 활용하시면 됩니다. 그러나, strcat이나 strcpy를 활용해서 다량을 문자열들을 복사나 붙여넣기 하게되면 시간이 오래 소요되게 됩니다.오늘은 strcat이나 strcpy가 아닌 다른 방식으로 같은 효과를 보면서 시간이 더 빠른 방법에 대해 알아보고자 합니다. strcat을 보시면 strcpy를 활용하는 것을 볼 수 있습니다.그러면 이런 생각을 하게 되죠.'strcat을 하지말고 그냥 strcpy를 사용하면 되지 않아?'맞습니다. strcat대신에 strcpy를 활용하게 된다면 아마 조금의 속도향상은 있을 겁니다.그러나, 아직까지 속도가 느리다고.. 2024. 4. 29.
Efficient String Matching : An Aid to Bibliographic Search 리뷰 이번엔 Efficient String Matching : An Aid to Bibliographic Search이라는 논문에 대해 리뷰해볼까 합니다. 해당 논문은 유명한 문자열 매칭 알고리즘인 "아호코라식"에 대한 논문입니다. 아호 코라식 알고리즘에 대해 이해하기에 앞서 kmp와 trie 알고리즘에 대해 어느 정도 알고계시면 이해하기 쉽습니다. KMP "ABAABC"라는 문자열에 "ABC"라는 단어가 부분 문자열로 존재하는지 체크하는 과정을 단순 반복문을 통하여 진행하게 되면, 맨 앞에 단어부터 해당 형식으로 진행하게 됩니다. kmp 알고리즘을 활용하게 된다면, 해당 형식처럼 진행을 하게 됩니다. kmp는 기존 문자열 매칭방식과 다르게 fail function이라는 실패 함수를 활용하게 됩니다. "ABC.. 2024. 4. 23.
C의 문자열 복사 java나 C++같은 경우 문자열 복사를 수행할 때 += 이라는 연산자를 활용하여 가능합니다. 그러나 C언어의 경우 문자열 복사를 수행할 때 += 연산자를 사용할 수 없습니다. 또한 입력하고자 하는 문자열의 길이를 알지 못하면 해당 값을 저장할 수 없습니다. java의 경우 String s = ""; String c1 = "1"; s += c1; System.out.print(s); 이런식으로 가능하지만, C의 경우 char *c1 = "1"; char ch[strlen(c1) + 1]; strcpy(ch, c1); printf("%s", ch); 이런식으로, 저장할 문자열의 길이를 저장한 이후, strcpy를 통해 값을 복사합니다. 이후에 다른 문자열을 추가할 경우에는 strcat을 통하여 값을 추가할.. 2024. 4. 21.
문자열 다루기 자바를 활용해서 코드를 작성하다보면 여러번 값을 출력해야 하는 경우가 발생합니다. 이럴 경우 여러번 모두 해당 형식처럼 작성하게 됩니다. for(int i = 0; i < n; i++){ System.out.print(i + " "); } 이럴 경우, 많은 시간을 출력하는데 소요되게 됩니다. 여러번 출력해야 하는 경우 보통 StringBuilder를 선언하여 사용합니다. StringBuilder sb = new StringBuilder(); for(int i = 0; i < n; i++){ sb.append(i).append(" "); } System.out.print(sb); 해당 형식으로 출력하게 되면, 마지막에 공백이 포함되게 됩니다. 그런 경우 .trim()으로도 처리가 가능하지만, 더 좋은 방법.. 2024. 4. 14.
728x90
반응형