시작 ¶
- 저희
~cpp Extreme Pair
팀은 어떤 문제든 우선 소스를 기본적으로 밑에 형태로 시작했습니다. 그래서 입력과 출력이나 진행에는 전혀 신경 쓰지 않고 문제를 푸는 알고리즘(process() 함수 부분)에만 집중할 수 있었습니다.
~cpp #include <iostream> using namespace std; int numOfData; inputData[10]; outputData[10]; void input() { cin >> numOfData; for(int i=0;i<numOfData;i++) { } } void process() { for(int i=0;i<numOfData;i++) { } } void output() { for(int i=0;i<numOfData;i++) { cout << outputData[i] << endl; } } void main() { input(); process(); output(); }
알고리즘 ¶
- 위에 시작이 끝나면 둘이 알고리즘을 생각했습니다.
- 문제당 따로 알고리즘을 생각하여 먼저 생각난 것이나 둘 중에 좋은 알고리즘을 선택했습니다.
- 이때 여러 문제를 동시에 푸는 게(예: 2명이서 2개의 문제를 동시에 푸는 것) 아니라 한 문제에 대해서만 생각했습니다. 왜냐하면 예를 들어 문제 1번을 생각하는 데 A가 12분 B가 8분이 걸리고 문제 2번을 생각하는데 A가 10분 B가 15분이 걸렸다고 하면 한문제를 둘이 동시에 풀면 8 + 10... 총 18분이 걸렸을 것을 문제를 각각 나누어 풀면 최악의 경우 A가 1번 B가 2번으로 나누어 풀면 12 + 15... 총 27분까지 시간이 걸리기 때문입니다. (대회 규칙상 컴퓨터는 각 팀당 무조건 1대입니다)
코딩 ¶
- 코딩은 기본적으로 PairProgramming 이였습니다. 드라이버가 코딩할때 파트너는 잘못된 코딩뿐만 아니라 이해안가는 부분에서는 계속적인 질문으로 드라이버 스스로 명확한 코드를 만들도록 했습니다.
- TestDrivenDevelopment를 사용했다고 말하기는 그렇지만 테스트 케이스를 입력으로 넣어놓고 프로그래밍 중간 중간에 제대로 돌아가는 지를 확인하기 위해 지금까지의 진행 상황을 출력했습니다.
제출 시 틀렸을 때 ¶
- 문제 제출 후 틀렸을 때 심사단 컴퓨터의 틀린 케이스를 대충 외워와서 문제점을 빨리 찾아 해결하였습니다.
- 시간을 단축키 위해 디스켓 제출할 때도 뛰었습니다...^^;;;
재동 ¶
- 상규와 대회전 연습을 통해 코딩 스타일과 규칙을 미리 정했었던 게 중요했다고 생각합니다. 안그랬으면 알고리즘 이외의 것도 생각해서 속도가 느려졌을 것입니다. 그리고 미리 호흡을 맞춰봤으므로 하면서 딱딱 맞았습니다.
~cpp int
에서~cpp Over Flow
나는 문제가 있었는데 상규가~cpp __int64
를 알고 있었습니다...^^;;;
- 어디에서 overflow 날만한 요소가 있었는지?? --neocoin
- 계산 과정중에 있었어여....ㅡ.ㅡ;;; --상규
- 계산 과정중에 있었어여....ㅡ.ㅡ;;; --상규
- 어디에서 overflow 날만한 요소가 있었는지?? --neocoin
상규 ¶
- 미리 싸울꺼 다 싸워놨다는게 승리 요소가 아니었나 생각합니다.. 대회 전 연습을 통해 미리 다 조정했기 때문에 그런거에서 시간을 빼앗기지 않아서 빨리 풀수 있었던것 같습니다.