그룹연습 시간과 대회 시간이 겹쳐서 응시할 생각이 없었는데,
aru0504님이 응시한다고 하셔서 1~2문제만 풀어보고 넘기려다가
중간에 문제가 안풀려 오기가 생겨 도전해본 대회이다.
https://www.acmicpc.net/contest/view/644
+) 2회 코딩테스트도 존재하며, 후기는 여기에 존재한다.
https://kth990303.tistory.com/98
13시 40분부터 대회 시작해서 14시에 그룹연습으로 빠지려 하였다.
A번은 단순히 개수를 세는 문제여서 빠르게 해결하였고, 이제 그룹연습을 할까 고민하던 중, A번 푸는 데에 3분 정도밖에 소요가 안됐기 때문에 B번까지 빠르게 풀고 그룹연습으로 가면 되겠다 싶어 B번을 풀러 갔다.
그러나, B번은 문제 자체는 쉬웠는데 자꾸 틀리는 현상이 발생했다.
dfs로 접근하다가 가만히 있어도 된다는 조건을 다시 파악하고 6틀 후에 backtracking으로 AC를 받았다. 대회 시간 때 제출한 코드 중에선 아마 내가 실행속도가 제일 빠른 0ms일 것이다 ㅎㅎㅎ (지금은 밀려났을 듯)
이 때부터 이미 그룹연습으로 가기엔 좀 늦었고, 오기가 생겨 C번으로 갔던 듯하다.
C번은 우선순위 큐 문제였는데, using namespace std; 위치를 잘못 붙여서 자꾸 컴파일 에러가 떠서 망했다.
아마 using namespace std; 문제랑, priority_queue 우선순위 조정이 안되는 에러(?) 때문에 1시간을 날린 것같다. 이 때부터 대회 결과는 포기했고, 왜 자꾸 에러가 뜨는 것인지, 그리고 다음 대회에서 이렇게 되지 않기 위해 어떻게 해야할지 고민하는데에 더욱 집중했다.
지금이 그냥 재미삼아 응시하는 대회라서 다행이지, 실제 대회 때 using namespace std; 잘못 사용하고, priority_queue 우선순위 조정 이상하게 된다고 생각하니 정말 끔찍했기 때문이다.
다행히 해결법을 1시간 정도 후에 찾았고,
이 대회 경험을 바탕으로 나는 이제 웬만해선 아래와 같은 전처리 슈도코드를 수정하지 않고 이용할 생각이다.
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string>
#define all(v) (v).begin(), (v).end()
#define press(v) (v).erase(unique(all(v)), (v).end())
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
const int MAX = 1000001;
const int INF = 0x3f3f3f3f;
const ll LNF = 1e18;
const int MOD = 1e9 + 7;
int N, C;
int main() {
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
}
D번을 풀 때, 사실 substr를 모르고 단순 for문으로 계속 파싱을 했었다.
D번을 풀고 느낀 점은 문자열 구현은 요즘 코테에도 많이 나오기 때문에 문자열 파싱을 열심히 해야겠다는 점을 느꼈다.
대회 끝나고 substr 검색하고 그 방법을 익히는 데 투자하였다.
E번은 뭔가 구현같아서 건너뛰었고, F번으로 갔는데,
F번을 backtracking_순열으로 해결해보려 했는데, 대회 도중 문제를 잘못 읽어서 계속 틀렸었다. 진짜 문제 좀 제대로 읽자.
나중에 대회 끝나고 코드를 빠르게 짜는 연습이 필요하다 싶어 next_permutation 사용법을 익히고 해결하였다.
이번 대회를 통해 파싱, 그리고 코드의 생산성에 대한 중요성을 뼈저리게 느꼈다.
따라서 원래는 필요성을 느끼지 못한 #define all(v) 코드, #define press(v) 코드를 추가하게 됐다.
원래는 코드를 추가하면서 자세한 리뷰를 남기려했는데,
요즘 블로그 포스팅이 귀찮아져서 그런지...
그래도 이 대회에서 난 가장 많은 것을 배운 것 같다. 실제 코테와 유사한 구현 테스트이다 보니, 코드의 생산성에 대해 뼈저리게 중요성을 느꼈기 때문인듯하다. 문제를 빠르고 정확하게 해결하기 위해선, 할 수 있는 한 모든 것을 이용하고 최대한 빠르게 해결해야 하기 때문에 각종 substr, next_permutation, #define 등의 코드의 중요성을 느끼게 됐다.
현재 가희 코테 문제들을 대회 중에 A~D번, 대회 끝나고 D~G번까지 해결해보았고,
H번은 좀 더 고민하고 풀어보려고 한다.
'PS > My Diary (PS, 대회후기)' 카테고리의 다른 글
[210703] 네이버 부스트캠프 웹/모바일 6기 코테 1차/2차후기 (9) | 2021.07.03 |
---|---|
[210530] 2021 연세대학교 신입생 프로그래밍 경진대회 Open 후기 (0) | 2021.05.31 |
[210522] 2021 데브 카니발 후기 (0) | 2021.05.22 |
[일기] 210521 ps 일기 및 약점 정리 (0) | 2021.05.21 |
[210513] 프로그래머스 월간 코드 챌린지 시즌2 5월 후기 (2) | 2021.05.14 |