PC/UVa ID : 110306/10132
이 포스트를 만든 목적
- 생각 절차, 푼 방법, 고민거리 등을 기록하기 위해서 만들었다.
이 포스트의 준비물
- firefox4 b8
- eclipse 3.6.1 + vrapper
- lua 5.1.4
참조 문헌
- 스티븐 스키에나, 미구엘 레비야 저. Programming Challenges: 알고리즘 트레이닝 북. 서환수 역.
Springer. 한빛미디어 초판 2쇄 2004.12.05. (문제 22, File Fragmentation, page 104)
참고 링크
- http://www.lua.org/manual/5.1/manual.html - 루아 메뉴얼, 스트링 찾을려고
- http://online-judge.uva.es/p/v101/10132.html - 원문
이야기
연구소에서 컴퓨터 파일이 담긴 쟁반을 들고 가다가 쟁반을 떨구었다. 파일은 모두 조각 났다. 조각난 모든 파일을 주웠다. 파일들을 자세히 보니, 모든 파일은 정확히 두 조각으로 부서졌고, 모든 파일은 같은 파일이였다. 하지만 조각난 지점이 제각기였다. 이 이 파일들은 ASCII 1 과 0 으로 이루어져 있다. 당신에게 이 파일을 복구해달라고 요청해 왔다.
프로그램의 입/출력
- 프로그램은 첫번째로 테스트 케이스 갯수를 양의 정수로 입력 받는다.
- 1번을 입력 받으면 빈줄로 개행한다.
- 2번까지 끝났다면, 한줄에 하나씩 조각난 파일을 입력한다.
- 이 때, 조각난 파일의 갯수는 짝수여야 한다.
- 파일 종료 문자 or 빈 줄이 입력 되면, 조각난 파일을 원상복구 시키고, 이 파일을 출력한다.
- 만약 원상복구 될 파일이 여러개 일 수 있다면, 이 중 아무거나 출력 한다.
- 모든 테스트 케이스가 끝날 때까지 3 ~ 4 번을 반복한다.
맛보기 코드
맛보기 사진
- 이 문제를 풀 때, 조각난 파일을 합칠수 있는 경우에 대해서 생각하고, 다음의 결론을 내렸다.
- 파일의 길이는 조각난 파일중 제일 작은 파일 길이, 제일 큰 파일 길이의 합과 같다.
- 합처진 파일의 갯수는 조각난 파일들 수의 1/2 이다.
- 위의 경우가 왜 그런지만 안다면, 문제는 무척 쉽게 풀린다.
- 버그가 있어, 수정해서 다시 코드 올렸다. 그래서 코드와 맛보기 사진이 다르다.
:wq
'책 정리 > Programming Challenges : 알고리즘 트래이닝 북' 카테고리의 다른 글
문제 27, 다리, Bridge, PC/UVa ID : 110403/10037 (0) | 2011.02.08 |
---|---|
문제 26, 팬 케이크, Stacks of Flapjacks, PC/UVa ID : 110402/120 (0) | 2011.02.01 |
문제 25, 비토와 친척들(Vito's Family), PC/UVa ID : 110401/10041 (0) | 2011.01.30 |
문제 24, Fmt, PC/UVa ID : 110308/848 (0) | 2011.01.30 |
문제 23, 더플릿, Doublets, PC/UVa ID : 110307/10150 (2) | 2011.01.22 |
문제 21, 자동 심사 스크립트, Automated Judge Script, PC/UVa ID : 110305/10188 (0) | 2011.01.06 |
문제 20, 암호 깨기2, Crypt Kicker2, PC/UVa ID : 110304/850 (0) | 2011.01.04 |
문제 19, 공통된 변경 문자열, Common Permutation, PC/UVa ID : 110303/10252 (0) | 2010.12.31 |
문제 18, 월도르프를 찾아라, Where's Waldorf? PC/UVa ID : 110302/10010 (0) | 2010.12.31 |
문제 17, WERTYU, PC/UVa ID : 110301/10082 (0) | 2010.12.28 |
최근댓글