예상보다 문제가 간단해서 흥분했습니다. 난이도를 살핀 결과 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번 문제에서 했던 실수(초기화)를 그대로 반복해서 패널티 한 번을 받고 풀다가 끝났습니다.