본문 바로가기
꾸준히 성장

[코드트리 후기] Novice Mid 연습 후기

by 니나노래방 2024. 3. 31.

1. 배경

지난 2월 코드트리에서 프로그래밍의 기초(Lv1, Novice Low) 를 공부한 이후, 한 달의 체험 기간을 추가로 얻었습니다. 이번에는 Lv2. Noivce Mid에서 머릿속에 있는 생각을 구체화하는 방법을 배우고 싶었습니다. 레벨 1에서 프로그래밍 언어를 꾸준히 연습하면서 자신감을 얻었던 것도 코드트리를 계속하고 싶은 이유였습니다. 

 

2. 학습 정보

이번 달에는 프로그래밍 연습 단계를 경험했습니다. 역시 기본 개념 + 연습 + 테스트 문제까지 약 240문제가 포진해 있었습니다.

  • 학습 레벨 : LV2. Novice Mid(총 241문제)
  • 파트 : 함수, 정렬, 시뮬레이션, 완전탐색, 케이스 별 풀이, Ad-hoc 문제 등 총 10개 파트
  • 레벨 특징 : 쌩 기초와 알고리즘 사이의 기본기를 단단히 할 수 있는 개념, 문제를 다룸
  • 상황 : 코테 문제를 풀 수 있지만, 풀이의 효율성을 생각하고 싶음, 알고리즘에 대한 호기심이 생기는 단계
  • 학습 니즈 : 알고리즘, 자료구조 이전에 기본 문법을 톺아보고 싶음! / 시간이 오래 안 걸리는 방법을 선택하고 싶음
  • 풀이 : 2주 동안 98문제 풀이 완료 (약 40%)
  • 풀이 이후 : 2주 내에 함수를 정의하여 효율적인 코드를 작성하고, 정렬 알고리즘을 배울 수 있었음

 

3. 학습 후기

내용이 어려워저도 기초 근육으로 이겨내기

Lv2는 이전 단계보다 좀더 정리된, 그리고 어려운 개념들이 많았습니다. 특히 '재귀함수' 와 '객채 정렬' 개념이 쉽지 않았습니다. 재귀함수는 처음에 설명을 보고 이해가 안 되어서 코드트리에 질문 폭탄을 남기기도 했었어요. 

 

하지만 이전 단계에서부터 계속 생각하는 연습을 해와서일까요? 차분히 문제를 풀어보고, 개념을 다시 읽어보는 과정에서 자동으로 문제를 풀어나갈 수 있었어요. PT를 배워서 기초 근육이 생겼고, 그 근육으로 좀더 무게를 많이 치게 되었달까요(?)

 

클래스 개념은 개념 자체를 이해하는 것도 좋았지만, 계속 클래스를 정의하는 과정에서 자연스럽게 개념을 익혔습니다. 풀다보니 마치 밀키트를 만들어두는 것 ㄹ 타이쿤을 하는 것 같은(?) 재미를 느꼈습니다. 준비된 재료와 틀을 만들어두고, 원하는 결과를 효율적으로 출력할 수 있더라고요. 좀더 연습이 필요하겠지만, 전보다는 클래스에 대해 더 잘 이해할 수 있어서 만족스러웠습니다. 

 

 

Lv1보다는 여유있게 풀어야 했어요

Lv1을 풀었을 때와는 다른 마음가짐으로 접근해야 했습니다. 진도나 풀이에 대해 좀더 여유로운 마음을 가져야 했어요.

전 단계에서는 한 문제에 3분, 6분 되는 문제도 많이 있었던 데 반해, Lv2에서는 20분, 30분 심지어 1시간짜리 문제도 있었어요. 그만큼 개념보다는 생각을 해야 하는 문제가 많아졌습니다. 처음에는 저도 다급한 마음이었지만, 배운다는 마음으로 마음을 비웠습니다. 

 

최대한 생각을 쥐어짜보기 

Lv2에서 얻어갈 수 있는 것 중에 이런 게 있더라고요. 

  • 떠오른 생각을 코드로 구현하는 근육이 생기게 됩니다.
  • 주어진 모든 문제에 대해 느리더라도 올바른 답을 내는 코드를 작성할 수 있게 됩니다.

이 부분에 대해 크게 공감했습니다. 이유는 주어진 제약 속에서 최대한 제가 아는 정보들을 조합해 생각을 쥐어짜보는 연습을 할 수 있었기 때문입니다. 제약이 있거나, 더 효율적인 방법을 나중에 알려주는 방식입니다. 

마치 제약에서의 최적화 문제를 푸는 것 같습니다. (출처 : KDI 경제정보센터)

 

이전에 풀었던 문제이지만 제약이 추가되었는데요. 예를 들어 같은 최소공배수 문제를 풀더라도 이전에는 그냥 '함수'를 만들어 풀었다면, 이번에는 '재귀함수'로 꼭 풀어야 했습니다. 저의 기준에서는 매우 어렵게 느껴져서 진짜 오랜 시간을 헤매고 메모하면서 제 나름의  (멋지진 않더라도 돌아는 가는??) 아이디어가 생기더라고요. 

 

 

반면 원래는 함수 등을 이용해 쉽게 풀 수 있는 문제도, 처음에는 다른 방법으로 접근하게 유도하기도 합니다. 예를 들어 len 함수로도 리스트 내 원소 갯수를 셀 수 있지만, 최대한 처음에는 for문을 이용해서 원소 갯수를 파악하도록 합니다.

 

이렇게 같은 문제도 여러 관점에서 접근하도록 개념 마다 제약을 추가해주신 덕분에, 새로운 관점으로 문제를 풀어볼 수 있었습니다. 

 

 

4. 바라는 점

개념과 문제 영역을 구분하면 어떨까?

코드트리의 UI 구조상 조금 아쉬운 사용 경험이 있었는데요. 유저의 입장에서는 기본 개념에 나오는 코드를 따라쳐보고 싶은 니즈가 있었는데, 코드를 따라 치고 내용을 확인하기 어렵다는 것입니다 (혹은 '틀렸습니다' 피드백을 받습니다).

 

그 원인은 '기본 개념'과 '문제'가 같은 탭 위계에 들어있기 때문입니다. 오른쪽 입력창에 있는 테스트 케이스는 '문제' 탭과만 관련되어 있습니다. '문제'에 있는 테스트 케이스를 기준으로 코드를 평가하기 때문에 사용자가 '틀렸다'라는 피드백을 받을 수밖에 없습니다. 

 

 

따라서 기본 개념과 개념 문제의 페이지를 구분하는 것은 어떨까 제안해 봅니다. 사용자가 기본 개념에 있는 코드를 따라쳐보고 싶다는 점, '개념'과 '문제'의 위계는 다르다는 점을 고려하는 것입니다. 이또한 기본 개념의 UI가 달라지거나 메뉴 구성이 복잡해지는 등의 문제가 있을 것 같아요 (ㅠㅠ 얼마나 고민하셨겠습니까.. ) 하지만 사용자의 편의성이나 긍정적인 경험을 위해 한번 UI 변경을 고려해봐도 좋을 것 같아요.

 

단축키 쥬세여

쪼꼬비.. 아니 단축키 쥬세여.. (출처 : 예목 유튜브)

 

코드트리에 단축키 하나만 추가되어도 문제 풀이 능률(?)이 올라갈 것 같습니다. 현재는 화면 하단에 있는 '코드실행' 버튼이나 '제출 및 채점' 버튼을 눌러야 하는데요. 키보드를 치다가 마우스로 손이 옮겨가는 과정, 입력창에서 커서를 화면 하단으로 이동해야 하는 과정이 생각보다 불편하더라고요! 지금도 물론 사용하기 좋지만, 하루빨리 단축키가 정착이 되었으면 좋겠습니다! 🙏🏻

 

 

풀었던 문제는 기한이 끝나도 볼 수 있다면

풀이를 한 문제라도 이용 기간이 끝나면 풀이한 내용을 다시 볼 수 없다는 아쉬움이 있었습니다. 문제 풀이가 끝나더라도 한번씩 풀었던 내용에 대해 복습하고 싶은 경우가 있는데요. 풀지 못한 문제에 대해서는 제한을 두더라도, 풀었던 문제나 질문을 한 문제에 대해서는 풀이나 문의에 대한 답변을 확인할 수 있다면 좋겠습니다. 

 

5. 마치며

두 달 동안 코드트리를 학습하며 파이썬과 프로그래밍의 재미를 다시 느낄 수 있었습니다. 이전 후기에서 코드트리를 한 권씩 떼면 파이썬과 친해질 수 있을 거라고 기대했는데, 정말 전보다 파이썬을 잘 다룰 수 있다고 말할 수 있게 되었어요.

 

이전에는 파이썬을 다시 해보고는 싶었지만 대체 어디서부터 다시해야하나 막막한 점이 있었습니다. 강의 콜렉터인 저는 파이썬 강의도 장바구니에 담아두고 있었지만, 막상 시간을 들여서 코드를 배우는 게 쉽지 않더라고요. 코드트리는 마치 어른들의 구O이나 눈높O 같은데요. 학습지처럼 하루 학습에 대한 부담을 줄여주고, 꼭 강의를 듣지 않더라도 텍스트를 읽거나 문제를 푸는 것만으로도 프로그래밍을 익힐 수 있다는 점에서 효율적인 학습 도구라고 생각했습니다. 

 

2주 동안 약 100문제를 풀었는데요! 4월에 결제해서 남은 약 150문제를 열심히 풀어보겠습니다.

코드트리 감사합니다!!! 🙇🏻‍♀️

 

 

 

 

참고

이 글은 글또 X 코드트리 이벤트를 참여하며 경험한 내용을 바탕으로 작성하였습니다. 
Lv2. Novice Mid를 한 달 동안 무상으로 제공받아 학습하였습니다. 

 

 

이미지 출처 

* 코드트리 : 코드트리 내 학습 페이지를 캡쳐하였음

* KDI 경제정보센터 : https://eiec.kdi.re.kr/material/clickView.do?click_yymm=201512&cidx=1002

* 예목님 유튜브 : https://www.youtube.com/@voiceS2

 

댓글