본문 바로가기
취업

[ 프로그래머스 ] 월간 코드 챌린지 시즌2 1차 대회 후기

by YWTechIT 2021. 4. 18.
728x90

✏️ 서론

이 글을 작성하는 이유는 내가 취업준비를 하면서 이런 대회도 참가했었지..라고 남기고 싶어서이다.


내가 본격적으로 코딩테스트 공부를 한지 약 3개월 정도가 되었고(12월 22일 월요일부터 시작), 그동안 얼마나 공부했는지 자가진단?을 하기 위해 시험을 봤다. 처음 시작할 때 알고리즘의 ' 알 '자도 몰랐고, 내 실력으로 알고리즘 대회를 나갈 수 있는 건가?! 했는데, 대회를 나가기 위해 신청하기 버튼을 누른 게 신기했다.

 

시험을 보기전에는 그냥 어떤 문제 유형이 나오는지 확인만 하고, 편한 마음으로 임해야지라고 생각을 했다. 그러다가 알고리즘 오픈 채팅방에 다른 사람들이 하는 대화를 보다 어떤 사람들은 이 대회를 위해 많은 시간을 투자했다고 하는 글을 봤다.

 

나는 문제유형만 살펴보려고 참가했는데 높은 점수를 획득하려고 많은 시간을 투자했다니... 순간 자기반성과 최선을 다해야겠다는 생각을 했다.

 

---

✏️ 본론

시험이 시작하고 문제유형을 이면지에 적으며 어떻게 풀어야 할지 분석하고 있는데, 5분도 안 지나서 첫 번째 문제를 100점으로 통과한 사람이 실시간 알림 창에 떴다. 알림 창을 보고 " 와... 진짜 대단하다 " 고 생각했고  동시에 얼른 나도 풀어야겠다고 느꼈다. 실시간 알람 기능이 경쟁심리를 자극하는 느낌(?)이 들었다.

 

결론적으로 4문제 중 2문제밖에 풀지 못했다. 😂 😂 

(이런걸 2솔이라고 하는 건가..)

 

첫 번째 문제는 어렵지 않았다. zip 함수를 사용하여 간단히 처리할 수 있었다.
두 번째 문제는 올바른 괄호 쌍(Valid Parenthesis String)을 찾는 문제였는데, stack공부할 때 백준 9012 - 괄호 에서 풀어본 문제였다. 그런데, 푼 지 오래돼서 기억이 잘 안 나서 헤맸다.. 기억을 더듬어가며 천천히 풀었다.

 

그런데, 문제 3문제 4에서 막혔다. 그래프를 이용하면 될 것 같았는데 어떻게 풀어야 할지 도저히 감이 잡히지 않았다.


알림 창에 실시간으로 제출 자수와 정답 자수를 볼 수 있었는데, 문제 3문제 4의 정답자 수의 현저히 줄어들었다. 나 말고도 어려워하시는 분들이 많은 것 같았다.

 

그래서 문제 3과 문제 4를 깔끔하게 포기하고 문제 1과 문제 2에서 수정할 코드가 있는지 확인했다. 2차 대회까지 끝나면 다른 사람 코드를 보고 더 나은 방법이 있는지 확인해야겠다!

 

# 첫 번째 문제 코드
def solution(absolutes, signs):
    return sum([absolute if sign else -absolute for absolute, sign in zip(absolutes, signs)])
# 두 번째 문제 코드
from collections import deque

def solution(s):
    def check_VPS(s):    # VPS check 함수
        stack = []
        brackets = {']': '[', ')': '(', '}': '{'}
        for bracket in s:
            if bracket in brackets.values():
                stack.append(bracket)
            else:
                if stack and brackets[bracket] == stack[-1]:
                    stack.pop()
                else:
                    return False
        if stack:
            return False
        return True

    s = deque(list(s))
    result = [check_VPS(s)]

    for i in range(len(s) - 1):    # 배열회전 기능
        front = s.popleft()
        s.append(front)
        temp = s
        result.append(check_VPS(temp))

    return result.count(True)
print(solution('[](){}'))

---

✏️ 결론

좋은 성적을 맞자고 참가한 대회는 아니지만 새삼 느낀 점 들이 많았던 대회였다. 2차 대회도 열심히 준비해서 챌린지 미션을 통과하고 싶다.

 

이번 대회를 통해 느낀 것은 세상에는 코딩 괴물이 많다는 것이고 1차 대회는 5299명 중에서 1359등이라고 나오는데, 작은 목표가 있다면열심히 공부해서 알고리즘 대회에서 100등 안에 들고 싶다!

반응형

댓글