Rust, Go, Node.js, Python, Java 등의 언어로 진행하는 10억개 데이터 처리 챌린지입니다.
- setup.sh를 실행해서 테스트 데이터를 생성합니다. (17GB 정도의 크기입니다.)
- 입력 데이터 파일에는 다음과 같이 지역과 측정값 쌍이 개행으로 구분된 채로 들어있습니다. 숫자는 정수 값입니다.
Prico;458634
Canada;780790
Central;798387
Athens;799643
Boa Vista;75486
- 해당 파일을 읽어서 지역명을 기준으로 최댓값, 최솟값, 개수, 총합, 평균값을 구하세요.
- 나눗셈을 할 경우 integer 연산으로 나머지는 버립니다.
- 지역명을 기준으로 오름차순 정렬을 합니다.
- 기대하는 출력 형태는 다음과 같습니다.
지역명=최솟값;최댓값;평균값(총합/개수)
Adenarith=1;9999999;5000594(4716533623284/9431947)
Amsterdam=4;9999999;4999133(4715142248923/9431920)
Anápolis=0;9999999;4999550(4718363502090/9437576)
- 일반적인 상용 컴퓨팅 환경에서 동작해야 합니다. x86, linux. RAM 32GB
- 하지만 unsafe나 트리키한 흑마술들은 사용 가능합니다.
버전은 1.77.0입니다.
- rust 경로에 추가 프로젝트를 구성합니다. basic을 복사해도 되고, cargo new로 생성해도 됩니다.
버전은 Go 1.22.2 입니다.
- go/cmd 경로에 새 폴더를 만듭니다.
- go/cmd/basic/main.go 파일을 복사한 뒤에 수정해서 최적화합니다.
버전은 v18.19.0입니다.
- nodejs 경로에 새 파일을 만듭니다.
- nodejs/basic.js 파일을 복사한 뒤에 수정해서 최적화합니다.
버전은 Python 3.10.12입니다.
- python 경로에 새 파일을 만듭니다.
버전은 openjdk 11.0.22입니다.
- java 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 G++ 11.4.0입니다.
- cpp 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 dotnet 8.0.103입니다.
- c# 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
- dotnet new로 직접 생성해도 좋고,
- basic을 복제해서 사용해도 좋습니다.
Rank | Lang | Code | time |
---|---|---|---|
1 | Go | lemon-mint1 | 6113ms |
2 | Rust | whitetac1 | 8046ms |
3 | Rust | Basic | 128293ms |
4 | Java | Basic | 184825ms |
5 | C++ | Basic | 190039ms |
6 | Go | Basic | 191004ms |
7 | C# | Basic | 215245ms |
8 | Node.js | sunrabbit1 | 593877ms |
9 | Python | Basic | 936269ms |
10 | Node.js | Basic | 1262149ms |