U E D R , A S I H C RSS

3rdPCinCAUCSE/J-sow전략

준비

문제풀기 규칙을 정한다든지, 예상 문제를 살펴보는 준비는 없었습니다. 작년에 같은 팀을 했기에 올해도 같은 팀으로 정우와 함께 나갔습니다. 작년 대히를 생각해보면, 알고리즘을 생각하는데 주력할 것이라는 이야기를 나누었습니다.

준비물로는 무한한 이면지와 볼펜 두자루가 있었습니다.

풀이

예상보다 문제가 간단해서 흥분했습니다. 난이도를 살핀 결과 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등의 명예(?)를 벗어보고자 합니다.후훗 :)

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0177 sec