U E D R , A S I H C RSS

1thPCinCAUCSE/Extreme Pair전략

소개

전략

시작

  • 저희 ~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
      • 계산 과정중에 있었어여....ㅡ.ㅡ;;; --상규

상규

  • 미리 싸울꺼 다 싸워놨다는게 승리 요소가 아니었나 생각합니다.. 대회 전 연습을 통해 미리 다 조정했기 때문에 그런거에서 시간을 빼앗기지 않아서 빨리 풀수 있었던것 같습니다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.1920 sec