📝 TIL

[TIL] 1주차 알고리즘ㅣ문제 풀이 꿀팁

오늘 ONEUL 2022. 11. 19. 23:02

 

나의 알고리즘 풀이 루틴

문제를 조금씩 풀어가며 만들고 있는 나만의 루틴이다.

  1. 문제에 따라 30분 ~ 1시간 타이머 시작
  2. 손으로 먼저 풀어보기
  3. IDE에 적은 내용을 바탕으로 슈도 코드 주석 달기
  4. 코드로 구현하기
  5. 에러가 발생했다면 디버깅 모드 적극 활용하기
  6. 정해둔 시간 안에 풀지 못했다면 다른 사람 풀이 보고 이해하기
  7. 새롭게 알게 된 메서드와 함께 블로그에 정리하기

시간은 좀 걸리더라도 확실히 이해는 되는 중이다.
계속해서 문제를 풀고 있으니 다양한 시도를 해보면서 나에게 맞는 방식을 찾아보자.

 

 

문제 풀이 세션

공통 팁

  1. 문제를 잘 읽기
    • 요구사항은 꼼꼼하게 읽고, 단순하게 정의해보기
    • 입출력을 참고하자
  2. 가만히 있지 않기
    • 입출력 테스트에 필요한 코드를 습관적으로 작성하기
    • 필요한 변수나 자료구조에 대해서 정리하기
    • 막연하게 모르겠다고 생각하지 말고, 어디가 이해가 안 가는지 생각해보기
    • 필요한 변수나 자료구조에 대해서 정리하기
  3. 문제 풀어내는데 집중하기
    • 경험적으로 시간이 충분하지 않은 경우가 많고 솔 수가 더 중요함
    • 특히 공부할 때는 먼저 풀고 → 개선하는 방식이 효율 좋음
  4. 나에게 맞는 IDE 사용
  5. 변수명 대충 쓰지 않기
    • 최대한 자세하게
    • 대충 설정해서 낭비하는 시간이 더 큼

문제 푸는 순서 팁

  1. 문제를 잘 읽고 최대한 많이 생각해서 문제를 가장 단순하게 정의하기
  2. 내가 바로 입출력을 찍어 볼 수 있는 환경 만들어두기
  3. 복잡한 문제를 단순한 여러 가지로 나누기

단계별 팁

  1. 일단은 어떠게든 구현하는 게 우선(방법이 틀려도, 효율이 안 나와도, 시간 초과로 fail이 나도)
  2. 다른 사람들의 코드를 참고해보기(내가 몰랐던 라이브러리나 메서드 , 내가 몰랐던 지식 등)
  3. 더 이상 풀리지 않는다면 몰라서 못 푸는 걸 수도 있음(정규식, 자료구조, 알고리즘 지식 등)
  4. 3번의 지점에 도달하면 자료구조와 알고리즘에 대해서 공부하기(그래도 구현이 우선)
    • 시간, 공간 복잡도
    • 문자열 관련 자주 나오는 문제, 해결 테크닉, 메서드들
    • 기본적인, 자주 나오는 수학 지식(fibo, 수열, 약수 등)과 해당 문제 푸는 별도의 테크닉
    • arr, list , 해쉬 테이블 등
    • 이진 탐색 등
    • sort
    • stack, quere
    • tree, heap
    • graph
    • hash
    • dfs, bfs
    • db
    • … 등등

 

 

오늘의 나는

알고리즘 문제 6개를 해결했다.
저번 프로젝트를 준비하면서 잠을 많이 못 잤더니 피로가 왕창 밀려왔다.
조금 지쳐갈 때쯤 팀원분이 추천해주신 노동요를 들으며 다시 기운을 냈다.
문제 1개를 해결할 때마다 춤도 췄다(?)

체력 관리도 해야 하는데.. 왜 하루는 24시간일까.
해야 할 일이 많은 만큼 시간 관리에 더 신경 쓰자.