PS/My Diary (PS, 대회후기)

[210415] 프로그래머스 월간 코드 챌린지 시즌2 4월 후기

kth990303 2021. 4. 16. 19:37
반응형

프로그래머스에서 월간 코드 챌린지 시즌2를 4월, 5월에 걸쳐 진행한다길래

접수해서 응시한 챌린지이다!

 

4월 4문제, 5월 4문제가 출제되고, 두 번의 대회 중 4문제 이상 맞출 경우에

경품 이벤트 응모가 가능하대서 한번 재미삼아 응시한 챌린지이다.

 

다른 시즌(시즌3 9월) 후기는 아래 포스팅에서~

https://kth990303.tistory.com/m/132

 

[210909] 프로그래머스 월간 코드 챌린지 시즌3 9월 후기

프로그래머스에선 1년에 두번 꼴로 코드 챌린지가 개최된다. 이번 챌린지는 평일에 실시되긴 하지만, 다행히 개인정비시간 때 실시되기 때문에 응시를 할 수 있었다. https://programmers.co.kr/competitio

kth990303.tistory.com

 

5월 후기는 아래 포스팅에서 볼 수 있습니다!

https://kth990303.tistory.com/52

 

[210513] 프로그래머스 월간 코드 챌린지 시즌2 5월 후기

프로그래머스에서 월간 코드 챌린지 시즌2를 4월, 5월에 걸쳐 진행한다길래 접수해서 응시한 챌린지이다! 4월 4문제, 5월 4문제가 출제되고, 두 번의 대회 중 4문제 이상 맞출 경우에 경품 이벤트

kth990303.tistory.com

 

이번 4월 챌린지에는 약 5,300명이 응시를 하였고,

이 중, 200점 이상 받은 사람은 1,660명 이었다. (궁금해서 일일이 스코어보드로 확인해봄...ㅋㅋㅋㅋㅋㅋㅋㅋ)

 

두 번의 대회 중 4문제 이상 맞춰야 응모가 가능하므로

나는 한 대회 당 2문제 이상 solved를 목표로 하였고,

실제로 238.9점으로 2문제를 solved하였다.

 

굉장히 놀랐던 점은, 대회 중간에 '순위 보기'라는 탭으로 실시간으로 내 순위를 볼 수 있고,

테스트케이스마다 부분점수로 등수가 갈린다.

만약 여러 번 같은 점수의 코드를 제출했다면, 가장 빨리 제출한 코드의 점수를 인정받는다. 

동점자의 경우, 제출 시각으로 순위가 매겨진다.


 

525등이라니.. 상위 10퍼에 든게 만족스럽긴 하나,

개인적으로 3번 문제를 만점받지 못한 점이 너무 아쉽다.

16일에 프로그래머스에서 풀이를 발표했는데,

알고리즘 자체는 풀이와 같아 무언가 반례를 놓친 게 있지 않을까 예상된다.

(아, 리프노드 뿐만 아니라 루트에서도 시작하게 했는데 그 부분을 잘못한 것 같다)

 

점수로만 보면 그렇게 좋은 결과는 아니지만,

열심히 응시한 챌린지이니 블로그에 후기를 포스팅하려 한다.

개인적으로 문제도 좋아 만족스럽기도 하고 말이다.

 

+ 응시 후, tree+dfs 문제를 많이 연습해야겠다는 생각도 많이 했다.


문제 및 해설 링크

아래 링크에서 문제와 해설을 볼 수 있다.

시간날 때 한 번 다시 도전해보자.

programmers.co.kr/learn/challenges?tab=all_challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

문제 이름 프로그래머스 레벨 Solved.ac 예상티어
(개인 주관 포함)
사용 알고리즘 정해 알고리즘
음양 더하기 1 Bronze III 수학, 구현 수학, 구현
괄호 회전하기 2 Silver III 구현, 큐 구현, 스택
모두 0으로 만들기 3 Gold II DFS, 그리디 DFS, 그리디
RPG와 쿼리 5 ? - BFS

prgms.tistory.com/47

 

[월간 코드 챌린지 시즌2] 4월 문제 해설

코딩이 재미있는 사람들을 위한 챌린지! 프로그래머스에서 4월 15일, 5월 13일 두 번에 걸쳐 월간 코드 챌린지 시즌2가 진행되고 있습니다. 2021년 4월 15일 19시 30분부터 22시 30분까지 진행된 시즌2 4

prgms.tistory.com


문제 후기

프로그래머스는 함수형으로 답안을 제출해야돼서 개인적으로 좋아하지 않는다.

특히 vector<vector<int>> 꼴로 인자가 주어지는데, 이 형태를 개인적으로 극혐...한다.


1. 음양 더하기 (Level 1)

그냥 sign이 false이면 값=-값 형태로 바꾼 후,

모두 더해주면 되는 굉장히 쉬운 문제였다.

확실히 맨 처음 문제라 굉장히 쉬웠고,

응시하자마자 10초 이내로 푼 사람이 등장한 것으로 기억한다.

 

난 프로그래머스 형태를 너무 오랜만에 봐서 3분 정도 걸렸던 듯 하다.


2. 괄호 회전하기 (Level 2)

이것 또한 문자열의 길이가 최대 1,000이라 그냥 구현하면 된다.

기억상 시간복잡도가 O(N^2)이기 때문에 그냥 구현해도 크게 문제 없다.

다만 vector<vector<int>> 꼴로 인자가 주어져,

그냥 나한테 편한 vector<int> v[MAX] 꼴로 바꾸고,

중간에 뻘짓한게 있어 엄청나게 시간을 잡아먹었다. (나중에 보니 그렇게 잡아먹은 것도 아니었지만)

 

여기까진 그냥 무난무난했고, 4문제 중 2문제는 역시나 이벤트 응모를 위한 인원들을 위해 쉽게쉽게 내주는구나 싶었다.

실제로 200점 이상은 무려 1700명이나 된다.


3. 모두 0으로 만들기 (Level 3)

이 문제... 일단 합이 0이 아니면 무조건 불가능한 케이스이므로, 

예외 케이스로 -1을 리턴해주는 경우를 제일 먼저 만들었다.

 

이후 dfs라는 것만 캐치하고 어떻게 할까 곰곰이 생각해봤는데,

어차피 dfs의 시간복잡도가 O(N)이어서,

그리고 그냥 단순히 끝에서부터 자기 자신을 0으로 만들고 남에게 자기 자신의 가중치를 주면 되지 않을까 싶어 진행했는데 33.3점, 그리고 이후 자꾸 38.9점 정도만 인정돼 짜증나서 조금 더 고민해보다가 포기하였다. 

 

내가 나만의 트리+dfs 문제의 테크닉 및 노하우를 확실하게 만들어놓지 않은 것도 한몫한 것 같다.

이 문제부터 정답자 수가 급격하게 떨어지기 시작한다.

아마 이 문제 만점자는 300여명 정도였던 것으로 기억한다.


4. RPG와 쿼리 (Level 5)

아마 대회 내에서 푼 사람이 11명 정도였던 것으로 기억한다.

그 정도로 어려운 문제... 

테스트케이스랑 몇몇 예외 케이스만 맞춰지게 제출해봤는데, 당연히 4점도 얻지 못했다ㅋㅋㅋ

다음에 실력을 키우고 다시 도전해봐야겠다.


어차피 5월 대회도 있고,

그리고 지금 군인이기도 하고,

앞으로 3~4년 간 취업을(가능하다면 대회까지) 위해 열심히 알고리즘 계속 준비할거니까

아쉽다면 아쉽지만, 전혀 낙담은 되지 않는다.

 

열심히 더 연습해야겠다는 생각이 많이 든다. 알고리즘 의욕이 팍팍 생겼다.

 

이제 dfs, graph 쪽 재밌는 문제들 풀러 가봐야겠다 ㅎㅎ

반응형