본문 바로가기

알고리즘/ACM 관련 정보 or 팁

[C언어] 문자열 루프문 사용 팁

알고리즘 문제를 풀다 보면 문자열을 루프문을 이용하여 각 문자를 접근하게 됩니다. 


문자를 접근하기 위해서 먼저 문자열의 길이를 구한 다음 

해당 문자열의 길이만큼 반복문을 돌려서 문자에 접근을 하게 됩니다. 


하지만


문자열 길이를 가져 올 때 불필요한 시간 낭비가 이루어 지게 됩니다. (불필요한 시간 : 문자열 길이를 가져오는 시간)



[부분 코드]

1
2
3
    for (int i = 0; arr[i]; i++) {
        printf("%c", arr[i]);
    }
cs

위와 같이 사용한다면 문자열의 길이를 얻어오지 않고도

문자에 접근 할 수 있기 때문에 시간을 좀 더 절약 할 수 있습니다.



[전체 코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int _strlen(char *arr) {
    int cnt = 0;
    while (!arr) arr++,cnt++;
    return cnt;
}
 
int main() {
    char arr[100];
    scanf("%s", arr);
 
    //비효율적인 코드
    //문자열의 사이즈를 구하는 불필요한 시간 낭비
    int strSize = _strlen(arr);
    for (int i = 0; i<strSize; i++) {
        printf("%c", arr[i]);
    }
 
    //문자열의 size를 구하지 않기 때문에 코드 속도가 더 빠름
    for (int i = 0; arr[i]; i++) {
        printf("%c", arr[i]);
    }
    printf("\n");
 
    return 0;
}
cs