정보처리기사 문제 파싱 알고리즘
류명운
·2016. 1. 8. 01:11
반응형
관련파일
소스코드
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class readHwp { public static void main(String[] args) throws IOException { int token; String sLine = null; String question = null; String ex1 = null; String ex2 = null; String ex3 = null; String ex4 = null; ArrayList Allquestion = new ArrayList(); ArrayList Allex1 = new ArrayList(); ArrayList Allex2 = new ArrayList(); ArrayList Allex3 = new ArrayList(); ArrayList Allex4 = new ArrayList(); ArrayList Allex5 = new ArrayList(); File file = new File("C:\\Users\\HY\\Downloads\\test.txt"); if (file.exists()) { BufferedReader inFile = new BufferedReader(new InputStreamReader(new FileInputStream(file),"EUC-KR")); while ((sLine = inFile.readLine()) != null){ if(sLine.matches(".*가\\..*")) { if(sLine.matches(".*나\\..*")){ //보기1과 2가 한 줄에 있는 경우 token = sLine.indexOf("나."); ex1 = sLine.substring(0, token); ex2 = sLine.substring(token); Allex1.add(ex1); //보기1 저장 Allex2.add(ex2); //보기2 저장 }else{ Allex1.add(sLine); //보기1 저장 } }else if(sLine.matches(".*나\\..*")) { Allex2.add(sLine); //보기2 저장 }else if(sLine.matches(".*다\\..*")) { token = sLine.indexOf("다."); //다. 로 시작하는 줄인 경우만 받기위해 문자열 위치값 저장 if(token == 0){ //다. 로 시작하는 문자열인 경우 if(sLine.matches(".*라\\..*")){ //보기3과 4가 한 줄에 있는 경우 token = sLine.indexOf("라."); ex3 = sLine.substring(0, token); ex4 = sLine.substring(token); Allex3.add(ex3); //보기3 저장 Allex4.add(ex4); //보기4 저장 }else{ Allex3.add(sLine); //보기3 저장 } }else{ //다. 로 시작하는 문자열이 아닌 경우 (ex: xx이다. ) if(sLine.matches(".*라\\..*")) { Allex4.add(sLine); //보기4 저장 }else if(sLine.matches(".*0\\..*") || sLine.matches(".*1\\..*") || sLine.matches(".*2\\..*") || sLine.matches(".*3\\..*") || sLine.matches(".*4\\..*") || sLine.matches(".*5\\..*") || sLine.matches(".*6\\..*") || sLine.matches(".*7\\..*") || sLine.matches(".*8\\..*") || sLine.matches(".*9\\..*")){ Allquestion.add(sLine); question = sLine; //문제 추가 }else{ //문제 하위 내용일 경우 question += "\n"+sLine; //문제에 하위 내용 추가 } } }else if(sLine.matches(".*라\\..*")) { Allex4.add(sLine); //보기4 저장 }else{ //문제 인 경우 if(sLine.matches(".*0\\..*") || sLine.matches(".*1\\..*") || sLine.matches(".*2\\..*") || sLine.matches(".*3\\..*") || sLine.matches(".*4\\..*") || sLine.matches(".*5\\..*") || sLine.matches(".*6\\..*") || sLine.matches(".*7\\..*") || sLine.matches(".*8\\..*") || sLine.matches(".*9\\..*")){ Allquestion.add(question); question = sLine; //문제 추가 if(sLine.matches(".*100\\..*")){ //100번 문제일 경우 Allquestion.add(question); Allquestion.remove(0); } }else{ //문제 하위 내용일 경우 question += "\n"+sLine; //문제에 하위 내용 추가 } } } inFile.close(); System.out.println("파싱 성공한 문제 수: "+Allquestion.size()); System.out.println("파싱 성공한 보기(1) 수: "+Allex1.size()); System.out.println("파싱 성공한 보기(2) 수: "+Allex2.size()); System.out.println("파싱 성공한 보기(3) 수: "+Allex3.size()); System.out.println("파싱 성공한 보기(4) 수: "+Allex4.size()); } } }
결과
반응형
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[프로젝트, 3학년] Elancia VolleyBall (0) | 2016.01.13 |
---|---|
[Eclipse] 외부 jar 파일 포함하여 프로젝트 jar파일 만들기 (0) | 2016.01.11 |
[프로젝트, 3학년] 키로그(Keylog) 모의해킹 프로그램 (2) | 2016.01.02 |
[프로젝트, 3학년] MultiCopy (다중복사 프로그램) (0) | 2016.01.02 |
[동영상편집]반디캠 촬영 파일 소리 증폭 방법 (2) | 2015.12.26 |