1. 대회 후기

SHOW ME THE CODE 대회 공지 사이트

04.04(토) 오후 2~5시에 쇼미더코드 (Show Me The Code) : 원티드 주관 코딩테스트 대회 (22년 1회차)에 참가하였다. 해당 대회는 채용 사이트 WANTED에서 주관하였고, 이 대회 결과에서 일정 점수 이상 획득한 지원자는 이력서 제출 시 원티드 인증 뱃지가 지원한 회사에 노출되는 특혜가 있다.

2022.07.07(목)까지 지원하는 건에 한하여 원티드 인증 뱃지가 노출되는 것이기 때문에, 그 전에 WANTED를 사용할 일이 없는 나로서는 쇼미더코드 참여 뱃지는 별로 관심이 없었다. 단지, 코딩테스트 대회 연습삼아서, 또 재밌을 것 같아서 참가하였다. 대회가 올해 총 4회(3, 6, 9, 12월 예정) 개최된다는데 기왕이면 모두 참여해 볼 생각이다.

사전에 대회 사이트가 이메일로 공지되었고, 해당 사이트에서 연습 문제를 풀어볼 수 있었다. 연습 문제는 총 세 문제가 있었는데, 체감상 solved 기준 실버 정도의 난이도였고 어려움 없이 전부 풀어내었다.

신청자에게만 링크가 전송되었고, 대회가 Open Contest로 따로 치루어진 것도 아니여서, 정확한 문제와 풀이 코드를 여기 올릴 수는 없을 것 같다. 그냥 각 문제별 간단한 풀이 과정 및 느낀점 정도만 작성하려 한다.

본 대회도 세 문제가 출제되었다. 대회 시간은 총 3시간이었는데, 1시간 26분에 걸려서 세 문제를 다 풀어내었고, WA는 1번 받았다. 대회 시간 안에 대회 문제를 모두 풀어내니까 꽤 뿌듯하기도 했다.

2. 문제 풀이 및 후기

$A$번 (12분)

순열을 만들어서 순열의 모든 경우마다 어떠한 작업을 재귀적으로 수행해서 결과값을 갱신하는 브루트포스 구현 문제였다. 재귀를 사용한 구현 능력을 테스트하는 문제였다고 볼 수 있다.

$B$번 (26분)

쿼리를 받아서 해당 쿼리의 정답을 출력하는 문제였다. 그래프 탐색 문제였는데, 변수의 범위에 따른 시간초과가 애매해보여서 DP까지 사용해서 풀었다.

답을 구할 때 MOD 연산도 필요했는데, 곱하는 연산 중간에 long long int 범위를 초과해버리는 경우도 발생한다. 따라서 연산을 한번에 수행하지 않고, 단계적으로 나누어서 MOD를 해가며 답을 구해야 했다.

트리 DP에 단계적 연산 MOD 처리까지 필요한 문제였어서 상당히 난이도가 있었다. (아니면 내가 너무 어렵게 생각해서 푼 것일 수도 있다.)

$C$번 (49분, WA: 1)

DP 문제였다. 역시 DP가 틀이 딱히 정해져있지 않고 어떠한 특별한 생각이 필요하기 때문에 대회 단골 문제로 등장할만 하다고 생각한다.

DP 탐색을 총 세 번 하는 과정을 생각해내야 해서, 풀이 방법을 찾는게 상당히 까다로웠다. 중간중간에 내가 구현한 방법이 맞는지 아닌지 계속 확인하면서 다섯 번 넘게 방법을 바꾸었다. 그 과정에서 제출했다가 WA도 한 번 받았다.

$B$번처럼 적절한 MOD 처리도 필요했으며, 2의 승수를 미리 저장해놓아서 시간을 단축하는 스킬 또한 필요했다. 까다로워서 상당히 헤맸지만, 결국 풀어냈다.

댓글남기기