[99클럽] 코테 스터디 1일차 TIL + HashSet

김엄지·2024년 5월 20일
0

회고

목록 보기
19/26

매일 꾸준히 한다는 건

오늘 배우고 경험하고 느낀 것을 꾸준히 기록한다면 긍정적인 변화를 경험할 수 있다는 것은 누구나 아는 사실일 것이다. 하지만 매번 노력해보지만 무너지는 의지를 이번 기회를 통해서 실천해보고 6주 후에 어떤 변화가 생겼는지 과정을 추적해보자.

🤔 어떤 문제가 있었고, 나는 어떤 시도를 했는지

  • 무작정 코딩테스트 Lv.0만 풀다가 코테 스터디에서 Lv.1 문제를 풀어보았다. 문제를 보고 어떤 자료구조가 필요하겠구나! 떠오르지 않는다. 어떤게 부족해서일까?
  • 풀이법이 아닌 풀이 과정에 대해 조언을 구해보았다.

🤗 어떻게 해결했는지

  • 문제의 조건에 따라 중복 제거 할 수 있는 자료구조를 찾았다. 코드를 하나씩 뜯어 보고, 어떤 메서드가 사용되었는지 따로 공부해보았다.

🫨 무엇을 새롭게 알았는지

  • 그동안 방향성을 못잡아서 주먹구구식의 공부 했다는 것을 깨닳았다. 코딩테스트에도 접근법과 연습이 필요했다.

1. 자료구조 및 알고리즘 기본 이해

먼저 다양한 자료구조와 알고리즘에 대한 기본 이해가 필요하다. 각각의 자료구조가 어떤 상황에서 유용한지, 그리고 시간 복잡도와 공간 복잡도도 이해하고 있어야 했다.

2. 문제 유형별 접근법 연습이 필요

나는 그동안 무작성 코딩테스트 홈페이지에 나와있는 문제들을 순서대로 몇 개 풀었었다... 😢
문제 유형에 따라 자주 사용되는 자료구조가 있다. 다양한 문제를 풀어보면서 패턴을 익히는 것이 중요하다.

  • 탐색 문제: 배열, 리스트, 해시맵, 트리, 그래프
  • 정렬 문제: 배열, 리스트, 힙
  • 최단 경로 문제: 그래프, 우선순위 큐
  • 문자열 처리 문제: 배열, 해시맵, 트라이
  • 동적 계획법 문제: 배열, 해시맵, 리스트

3. 예제 문제 풀이 및 분석

직접 풀어보고, 다른 사람의 풀이를 분석해보는 것이다. 문제를 풀 때 이런 질문들을 스스로에게 던저보자.

  • 문제에서 요구하는 데이터의 저장, 접근, 수정 방식은?
  • 데이터의 크기와 문제의 시간/공간 복잡도 제약은?
  • 문제의 기본 연산은 무엇이며, 이를 효율적으로 수행할 수 있는 자료구조는?

4. 문제 풀이 후 복습

문제를 푼 후에는 반드시 복습을 해야 한다. 다시 풀어보면서 다른 접근법이 없는지, 더 효율적인 방법이 없는지 고민해보자. 내가 제일 부족했던 부분이었다. 그냥 풀고 풀이한 내용을 전리품마냥 생각했었다. 그냥 모아보니 뿌듯한 느낌...

5. 코드 리뷰 및 피드백

내 코드에 대해 피드백을 받는 것도 중요하다. 나중에 코테 하다가 동료를 찾으러 나서봐야겠다. 너 내 동료가 되어라 ! 깔끔하게 문제 해석하는 나 자신 좀 멋질 듯 싶다 ! 🤣

🧐 내일 학습할 것은 무엇인지

개념정리
자료구조와 알고리즘 기본 이해가 필요하다. 각각에 대해서 공부해보고 정리하자.

  • 배열(Array): 고정된 크기의 순차적인 데이터 저장소. 빠른 접근이 필요할 때 사용.
  • 리스트(List): 가변 크기의 순차적인 데이터 저장소. 데이터의 삽입 및 삭제가 빈번할 때 유용.
  • 스택(Stack): LIFO(Last In First Out) 구조. 함수 호출이나 후위 표기법 계산 등에 사용.
  • 큐(Queue): FIFO(First In First Out) 구조. 작업 대기열이나 너비 우선 탐색(BFS) 등에 사용.
  • 해시맵(HashMap)/딕셔너리(Dictionary): 키-값 쌍의 저장소. 빠른 검색, 삽입 및 삭제가 필요할 때 사용.
  • 트리(Tree): 계층적인 데이터 저장소. 이진 탐색 트리(BST), 힙(Heap), 트라이(Trie) 등이 있음.
  • 그래프(Graph): 노드와 간선으로 이루어진 구조. 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) 등에 사용.

유형별 문제 풀이
분석
복습

결국 꾸준한 연습과 학습이 필요한 길이다. 능력을 키우기 위해서 하루하루를 열심히 보내보자 !

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글