Skip to content

Commit 563eabc

Browse files
committed
update
1 parent 4c84aa6 commit 563eabc

File tree

8 files changed

+17
-17
lines changed

8 files changed

+17
-17
lines changed

compare/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ OCaml에서 집합이나 맵을 만들 때는 항상 타입과 비교 (`compare`
2020

2121
## 규칙
2222
- 반복문 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
23-
- 원소 천 만개를 생성하고 집합으로 변환하는데 30초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
23+
- 원소 천만개를 생성하고 집합으로 변환하는데 30초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2424
```console
2525
$ time ./compare 10000000
2626
./compare 10000000 46.86s user 3.29s system 99% cpu 50.149 total

empty/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ OCaml에서 빈 리스트인지를 검사하는 원시적인 방법은 해당
1515
이 모듈은 `./empty -opt [길이]`로 실행할 수 있다.
1616

1717
## 규칙
18-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19-
- 천만개 원소를 생성하고 처리하는 데 수 초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
18+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19+
- 원소 천만 개를 생성하고 처리하는 데 수 초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2020
```console
2121
$ time ./empty 10000000
2222
4999630

file-io/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# 파일 읽고 쓰기
22

33
## 목표
4-
큰 파일을 빠르게 읽고 쓸 수 있어야 한다. 이를 위하여 꼬리 재귀 함수를 이용할 수 있어야 한다.
4+
큰 파일을 빠르게 읽고 쓸 수 있어야 한다. 이를 위하여 꼬리 재귀 함수를 이용할 수 있어야 한다.
55

66
## 구현
77
#### 큰 파일 생성기
88
`./gen [줄 수]`를 실행하면 해당 줄만큼 랜덤 숫자가 채워진 `large.txt` 파일이 생성되어야 한다. 이를 위해서, [gen.ml](src/gen.ml)`generate` 함수를 작성한다.
99
#### 큰 파일 처리기
1010
`./read large.txt`를 실행하면 모든 줄에 있는 숫자를 읽은 후 짝수의 개수를 출력되어야 한다. 하지만 여기서 사용되는 함수 `read_file_unopt`는 비효율적이다.
11-
파일이 큰 경우 느리거나 스택오버플로우를 유발한다.
11+
파일이 큰 경우 느리거나 스택오버플로우를 유발한다.
1212

1313
이를 해결하기 위해서, [read.ml](src/read.ml)`read_file_opt` 함수를 작성하라. 이 함수는 `./read -opt large.txt`로 호출할 수 있다.
1414

1515
## 규칙
16-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
17-
- 1억줄 파일을 읽고 쓰는데 1분을 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
16+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
17+
- 1억줄짜리 파일을 읽고 쓰는데 1분을 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
1818
```console
1919
$ time ./gen 100000000
2020
./gen 100000000 12.16s user 0.30s system 99% cpu 12.457 total

list/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ OCaml에서 리스트의 원소를 추가하는 방법은 두 가지가 있다.
1616
이 모듈은 `./list -opt [길이]`로 실행할 수 있다.
1717

1818
## 규칙
19-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
20-
- 천만개 원소를 생성하고 제곱하는 데 수 초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
19+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
20+
- 원소 천만 개를 생성하고 제곱하는 데 수 초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2121
```console
2222
$ time ./list 10000000
2323
timeout (>5 min)

regexp/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ OCaml에서 정규식은 `Str.regexp` 함수를 사용하여 만든다.
1515
이 모듈은 `./regexp -opt [길이]`로 실행할 수 있다.
1616

1717
## 규칙
18-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19-
- 천만개 원소를 생성하고 검사하는 데 5초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
18+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19+
- 원소 천만 개를 생성하고 검사하는 데 5초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2020
```console
2121
$ time ./regexp 10000000
2222
1496356

serialize/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ OCaml에서는 자료구조를 직렬화하는 `Marshal` 모듈을 제공한다.
1919
`generate_opt``read_file_opt`를 작성하라.
2020

2121
## 규칙
22-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
23-
- 백만줄 파일을 읽고 쓰는데 1초을 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
22+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
23+
- 백만 줄짜리 파일을 읽고 쓰는데 1초을 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2424
```console
2525
$ time ./gen 1000000
2626
./gen 1000000 12.16s user 0.30s system 99% cpu 12.457 total

string/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ OCaml에서 문자열을 이어붙이는 가장 쉬운 방법은 `String.cat` (`
1515
이 모듈은 `./string -opt [길이]`로 실행할 수 있다.
1616

1717
## 규칙
18-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19-
- 백만개 원소를 생성하고 접합하는 데 1초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
18+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
19+
- 원소 백만 개를 생성하고 접합하는 데 1초를 넘지 않아야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
2020
```console
2121
$ time ./string 1000000
2222
timeout (>5 min)

tail-recursion/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
이를 해결하기 위하여, 효율적인 길이함수 `length_opt`를 작성하라. 이 함수는 `./tail -opt [길이]`로 호출할 수 있다.
1111

1212
## 규칙
13-
- 순환문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
14-
- 원소 천만개짜리 리스트를 수 초 안에 처리하여야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
13+
- 반복문은 재귀 호출로 구현하고 `for` 문을 사용하지 않는다.
14+
- 원소 천만 개짜리 리스트를 수 초 안에 처리하여야 한다. 참고로, Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz 에서 아래와 비슷한 성능이 나온다.
1515
```console
1616
$ time ./tail 10000000
1717
Fatal error: exception Stack_overflow

0 commit comments

Comments
 (0)