This repository has been archived by the owner on Jun 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SolutionDescription.txt
77 lines (63 loc) · 4.35 KB
/
SolutionDescription.txt
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
0. 파일을 변환한다.
0.0. 변환할 파일을 선택한다.
0.0.1. 선택된 파일의 docx 버전이 존재하는지 확인한다.
Yes. 있다면
파일 이름 중복 오류를 출력하고 종료한다.
No. 없다면
계속 진행한다.
0.1. 해당 hwp 파일을 읽어들인다.
0.1.1. 동일 프로세스가 아닌 독립 프로세스로 해당 파일을 지정된 프로그램으로 연다.
0.2. 매크로를 사용하여 docx 파일로 변환하여 저장한다.
0.2.1. 파일을 연 후 다른 이름으로 저장을 선택한다.
0.2.2. 다른 이름으로 저장할 때 docx 형식을 선택한다.
0.2.3. 저장한다.
1. 파일을 한문장씩 읽어들인다.(파일로 부터 데이터 추출)
1.1. 문장의 첫 문자가 문제 번호인 경우
1.1.1. 저장된 값들(현재 성별, 현재 영어 구, 현재 한국어 구, 현재 선지 번호)을 모두 초기화 한다.
1.1.2. 해당 문제 번호를 저장한다.
1.2. 문장의 첫 문자가 선지 번호인 경우
1.2.1. 해당 선지 번호를 저장한다. // 선지 번호의 유니코드를 찾고 해당 범위 내에서 선지 번호를 찾는다.
1.2.2. "W : " 혹은 "M : "을 찾는다.
Y. 존재하면 해당 값을 현재 성별에 저장한다.
N. 존재하지 않으면 현재 성별 값을 None으로 저장한다.
1.2.3. 나머지 문장의 앞뒤 공백을 제거한다. 이후 문장을 "/"로 분리하고 또 앞뒤 공백을 제거 한다. 그리고 가공된 구를 저장한다.
1.3. 문장의 첫 문자가 문제 구분자이거나 문자가 없는 경우
1.3.1. 에러 메시지를 출력한다.
1.4. 문장의 첫 문자가 한글이나 영어인 경우
1.4.1. 영어 문장인 경우 // 첫번째 글자의 아스키 코드 값이 영어 알파벳 범위에 존재한다면 혹은 숫자로 시작한다면
1.4.1.1. "/"로 문장을 분리하고 가공된 구의 앞뒤 공백을 제거한 뒤 저장한다.
1.4.2. 한글 문장인 경우
1.4.3. "/"로 문장을 분리하고 이를 구로 저장한다.
1.4.4. 저장된 구의 앞뒤 공백을 제거한다.
1.4.5. 문장을 추가하기 위해 현재 선지 번호가 마지막에 저장된 선지 번호와 동일한지 검사한다.
Yes. 동일하다면
동일한 선지 번호에 문장을 추가한다. // 줄바꿈 문자가 있어도 다음 선지번호가 나오기 전까진 이전 선지번호에 문장이 저장된다.
No. 동일하지 않다면
새로 문장을 추가한다. // 현재 선지번호로 저장
1.4.5. 현재 저장되어 있는 영어 구와 한글 구의 요소 갯수가 동일한지 검사한다.
No. 동일하지 않다면
1. 인덱스 갯수가 동일하지 않다는 오류를 출력한다.
1.4.6. 구를 추가하기 위해 선지 번호가 저번 꺼와 동일한지 검사한다.
No.
인덱스를 이용하여 영어구, 한국어구, 선지의 첫 문자,
현재 저장되어 있는 선지 번호에 대한 구를 저장한다.( 클래스에 저장 )
Yes.
인덱스를 이용하여 영어구, 한국어구, 선지의 첫 문자, 현재 저장되어 있는
선지 번호에 대한 구를 저번 문장에 저장한다.
1.5. 1.1부터 1.4 까지의 경우의 수가 아닌 경우
1.5.1. 에러 메시지를 출력하며 종료한다.
2. 데이터 전처리 1 (영한 치환 파일, 한영 치환 파일 제작)
2.1. 만들어진 문제 모음을 입력받는다.
2.2. 문제 모음에서 하나씩 꺼낸다.
2.2.1. 꺼낸 문제들의 문제 번호를 저장한다.
2.2.2. 다음 문제 번호를 위해 문제 번호에 1을 더한다. 선지 번호와 플래그도 각각 1로 세팅한다.
2.2.3. 현재 문제의 문장들을 하나씩 꺼낸다.
2.2.3.1. 선지 번호를 출력한다.
2.2.3.2. 선지 번호에 1을 더한다.
2.2.3.3. 현재 문장의 구들이 존재하는지 검사한다.
Y. 있다면
현재 구의 값들을 영어구, 한국어구로 따로 저장한다.
2.2.3.4. 영어구의 길이와 한국어 구의 길이가 같다면
2.2.3.4.1. index는 각 구의 길이로 저장한다.
2.2.3.4.2. 0부터 인덱스까지의 숫자 만큼 반복문을 돌려 각각 영한 치환 데이터, 한영 치환 데이터를 뽑아낸다.
2.2.3.5. 플래그에 ((현재 선지 번호에 1을 더한 값)의 2로 나눈 나머지 값)을 저장한다.