티스토리 뷰

반응형

요즘 알고리즘 풀이 사이트가 꽤 많이 생겼습니다. 탑코더, 코드포스, 해커랭크, 알고스팟, 코딩도장 등등..

이런 사이트나 대회에서 사용할 수 있는 fast file I/O 방법을 공유 해 드리겠습니다.


제가 소개 해드리는 팁은 input을 한번에 받아서 이 값을 다시 get_num()이나 get_str()로 원하는 자료형 값으로 읽어오는 방법입니다.

왠지 코드를 보면 while문을 돌고 돌아서 값을 return 해주니 더 느릴 것 같습니다.

하지만 test case가 많으면 많을수록, 그리고 input 값이 많이 주어지면 많이 주어질 수록 엄청난 시간을 절약할 수가 있습니다.


다 같은 알고리즘으로 풀이를 했다면, 이런 꼼수아닌 꼼수가 여러분의 순위를 좌우하는 법이거든요.

여러분도 한번 사용해보세요.

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
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
 
char buf[3000];
char* b = buf;
 
int get_num()
{
    while (*b < '0' || *b > '9')
        b++;
 
    int ret = 0;
    do {
        ret = (ret*10) + (*b - '0');
        b++;
    } while (*b >= '0' && *b <= '9');
 
    return ret;
}
 
int get_str(char* str)
{
    while (*b < 'A' || *b > 'z')
        b++;
 
    int length = 0;
    while (*b >= 'A' && *b <= 'z')
        str[length++] = *b++;
 
    return length;
}
 
int main()
{
    //if (freopen("infile.txt", "r", stdin) == NULL) return 0;
    fread(buf, 3000, 1, freopen("infile.txt", "r", stdin));
    return 0;
 
}




반응형
댓글
공지사항
최근에 올라온 글