== 준비 == 문제풀기 규칙을 정한다든지, 예상 문제를 살펴보는 준비는 없었습니다. 작년에 같은 팀을 했기에 올해도 같은 팀으로 [정우]와 함께 나갔습니다. 작년 대히를 생각해보면, 알고리즘을 생각하는데 주력할 것이라는 이야기를 나누었습니다. 준비물로는 무한한 이면지와 볼펜 두자루가 있었습니다. == 풀이 == 예상보다 문제가 간단해서 흥분했습니다. 난이도를 살핀 결과 B < A < C 라고 판단하고 쉬운 순서대로 풀어나갔습니다. * B번 문제 ( ~ 약 7시 ) * 사각형의 꼭지점에 집착한 [나휘동]과 달리, 한 칸 넓이를 중심으로 본 [정우]가 의견을 내자 가장 쉬운 문제로 전락(?)했습니다. * PsuedoCode도 적어보지 않고 바로 코딩했습니다. * 출력 형식을 지키지 않은 패널티를 받았습니다. :( * 두 번째 테스트 케이스를 받을 때 (이차원 배열을 모두 0으로 만드는 작업) "초기화"를 하지 않아 두 번 패널티를 받았습니다 :( * A번 문제 ( ~ 약 8시 20분 ) * DevilsCamp2003에서 풀어보았던 문제입니다. * 8방향 검색이 필요없고 4방향 검색(오른쪽 위, 오른쪽, 오른쪽 아래, 아래)만 하면 된다는 결론이 났습니다. 왜냐하면 맨 왼쪽 점을 출력해야 하기 때문에 역방향 검색은 의미가 없다는 판단을 했기 때문입니다. * 육목을 검사하지 않아 한 번 패널티를 받았습니다. :( * 자가 테스트는 화면에 붙여넣기를 하다가 나중에 파일 입출력으로 바꾸었습니다. 화면에 붙여넣기는 시간이 너무 오래 걸렸습니다. :( * C번 문제 * 이번 문제도 배열로 풀 수 있으리라는 생각을 우선 했습니다. * 다음 과정을 PsuedoCode로 작성했습니다. * 이차원 배열을 써서 자신보다 무거운 것은 1로, 가벼운 것은 -1로 했습니다. * 배열을 따라가면서 추가적으로 얻을 수 있는 관계를 설정해주었습니다. "예) '1번 < 4번', '4번 < 5번'일때 '1번 < 5번'인 관계를 표시" * 마지막에 배열을 한 줄씩 읽어서 자신보다 큰 것이 구슬 수(N) 절반 이상이거나, 작은 것이 절반 이상인 줄이 몇 줄인지 세었습니다. * {{{~cpp input x, y 배열[x-1][y-1] = 1 배열[x-1][y-1] = -1 배열 검사(인덱스 row, col) 배열[row][col] == 1(또는 -1) 배열 검사( 인덱스 j) 배열[col][j] == 1(또는 -1) : 배열[row][j] = 1(또는 -1) 반복 ( row만큼 ) 배열 검사(인덱스 row, col) 배열[row][col] == 1 큰 것 세는 카운터 증가 배열[row][col] == -1 작은 것 세는 카운터 증가 카운터(둘 중 하나) > N 안되는 것 세는 카운터 증가 // 이 부분에서 큰 것과 작은 것을 세는 카운터를 초기화 했어야 한다. }}} * B번 문제에서 했던 실수(초기화)를 그대로 반복해서 패널티 한 번을 받고 풀다가 끝났습니다. :( == 후기 == * 같은 실수를 반복해서 아쉽네요. 정답에 거의 접근했음에도 풀지 못한 아쉬움이 많이 남습니다. * 아무리 급해도 필요한 기능은 함수로 묶어내야 한다고 느꼈습니다. * 최소한 루프 인덱스라도 통일한다면 한결 코딩이 수월했으리라는 생각을 합니다. * 다음대회는 2년 연속 5등의 명예(?)를 벗어보고자 합니다.후훗 :) ---- [3rdPCinCAUCSE]