티스토리 뷰

반응형

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

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


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

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

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


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

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

#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;

}




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