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 2021-02-07 05:22:17
Processing time 0.0149 sec