책 정리/Programming Challenges : 알고리즘 트래이닝 북
문제 14, 에르되시 수 (Erdos Numbers)
최익필
2009. 12. 8. 00:59
PC/UVa ID : 110206/10044
사설
문제 풀기는 한 2주 쯤 된거 같다. 에르되시 수를 풀기 위해선 "최단 경로" 알고리즘이 필요 했기에 이 부분이 제일 막혔다. 1주 가량 지하철을 타오면서 실마리를 풀어서, 바로 코딩 작업에 착수 해서 완성하였다.
실마리는 "한번 갔던 길은 되돌아 가지 않고, 갈 수 있는 길로 계속 가면 된다." 아직 이 방법밖에 모르겠으므로, 다른 문제 풀때 한번 알아보자.
개요
에르되시 수 부터 알아야 하는데, 책보다는 에르되시의 수 에서 한번 보길 권한다. 쉽게 설명하면, 에르되시와 같이 논문 쓰면 에르되시의 수는 1이다. 만약 에르되시 수 1인 사람과 같이 논문을 썻다면 나는 에르되시의 수 2가 된다. 마찬가지로 2인 사람과 같이 논문을 썻다면 나는 3이 된다.
입력
- 첫째 행에는 시나리오 갯수가 들어간다. 각 시나리오에는 논문 데이터베이스와 이름 목록으로 구성 된다.
- 첫째 행 뒤에는 P와 N이라는 자연수를 입력 받는다. P는 논문의 수이고, N은 에르되시 수를 알고 싶은 사람들의 수이다.
- 그 다음 줄에는 논문 데이터 베이스가 입력 되며, 이때 저자도 같이 다음의 양식으로 입력 된다.
Smith, M.N., Martin, G., Erdos, P.: Newtonian forms of prime factor matrices
Erdos, P., Reisig, W.: Stuttering in petri nets
- 3번의 입력이 끝나면, 에르되시 수를 알고 싶은 사람의 이름을 N 개 만큼 입력 받는다.
출력
- 백문의 불허 일견, 링크로 대체한다.
http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110206&format=html
느낀점
- 주석은 반드시 달자
- 변수명은 오래 생각해도 되니, 꼭 잘 정하자
- 함수로 뺼 수 있으면 함수로 빼자
- 끝까지 놓지 말자, 반드시 풀릴테니까.