DIV 2로 강등되고 나서 처음 시도하는 SRM.
[결과]
- 이지는 빨리 풀었으나, Mid를 테스트하느라 내는 게 늦었다.
- 이지 : 238.97 / 250
- 미드 : 234.59 / 550
- 그리고 챌린지가 하나 실패해서, 결과적으로는 109등. / 800명
- 레이팅은 916 -> 1040 으로 +124 이다.
[과정]
처음에 이지를 풀고 간단히 테스트 하고 제출했다. 이후 미드를 열었는데 너무 어려웠다.
답이 잘 나오지 않아서 10분쯤 고민한 뒤 Hard를 열었는데, 이상하게 방금 본 문제와 똑같은 문제였다.
알고 보니 내가 미드가 아닌 하드를 열어버렸던 것.
하드를 닫고 나서 미드를 풀었다.
그냥 말하는 대로 모두 구현만 하면 되는 문제였는데,
내가 좀 비효율적으로 구현하기도 했고, 다 구현하고 나서도 테스트하느라 많은 시간을 소비했다.
하드 풀 시간은 되지 않아서 챌린지 set를 만들었는데,
생각보다 쓸모가 없었다. 왜냐하면, 이 문제는 어떤 경우를 만족하지 않는 모든 경우 Invalid를 출력하고,
만족하는 경우에만 답이 달라지는데,
내가 '원래 Vaiid 가 나와야 하는데 Invalid가 나오는 세트' 를 만들기가 쉽지 않았기 때문이다.
만일 'Invalid가 나와야 하는데 Vaild가 나오는 답' 을 만들어서 시도하는 경우, 챌린지 실패할 가능성이 높다.
왜냐하면, 이 사람이 원래 코드를 잘못 짜서 되는 경우에도 Invalid를 출력하게 할 가능성이 크기 때문이다.
[배운 점]
- 이지 풀고 하드를 먼저 열어보자. 풀만하면 풀고, 아니면 안 풀면 된다.
- 챌린지를 잘 하자! - Challenge를 함부로는 하지 말자. (안 했으면 20등은 올랐을 점수이다.)
- 할 거라면 그냥 시도하지 말고, 이 코드에 내 챌린지 input을 넣어본 뒤에 동작을 예상하고 나서 도전하자.
- 완벽해 보이는 코드들도 생각보다 빈틈이 많다. 꼼꼼히 읽어보고 챌린지를 시도하자.
- 내 코드를 돌려보면서 챌린지를 만들어야 하는데, VS에 복사해 놓고 거기서 만들어보자.
- 이유 : Challenge Phase에서는 더이상 컴파일이 되지 않는다 !!
- 완성된 챌린지 input은 메모장 등에 (맞는 답 / 틀릴 이유 / 틀려서 나올 답)을 적어서 저장해두자.
- 이번 미드처럼, 짜는 데는 금방 끝냈지만 테스트 할 것이 많은 경우,
어느 정도 확신이 들면 미리 Submit을 하는 것도 좋은 전략인 것 같다.
- 어떤 조건을 만족시키지 못해서 return "Invalid"인지를 쓸 때, return의 문자열을 변경시키면 무지 귀찮아진다.
시간도 많이 잡아먹는다.
그 대신, 다음과 같이 cout을 활용하자.
if(조건 불만족시) { cout << "날짜 오류" << endl; return "Invalid"; }
(물론 이 출력문이 시간 복잡도에 영향을 미치지 않을 때.)
'알고리즘 대회 > TopCoder SRM 실전' 카테고리의 다른 글
여섯 번째 Event - SRM 585 DIV 2 (0) | 2013.07.20 |
---|---|
다섯 번째 Event - SRM 584 DIV 2 (0) | 2013.07.11 |
세 번째 Event - SRM 582 DIV 1 (0) | 2013.06.15 |
SRM 579에서 Petr의 성적. (0) | 2013.05.29 |
두 번째 Event - SRM 580 DIV 1 (0) | 2013.05.26 |