TIL 21.06.16

Jaemin Jung·2021년 6월 16일
0

Today I Learned

목록 보기
40/62
post-thumbnail

오늘한일

알고리즘에서 사용되는 수학적 개념 조합, 순열, 최대공약수, 멱집합을 공부했다.
어떤 문제에서 어떤 수학적 개념이 필요한지 파악하는 연습을 하였지만, 전혀 공부하지 못했다.
왜냐하면 그 전부터 주어진 문제를 하나도 해결 못해나갔기 때문에 손도 못대고 끝이나버렸다.

저번 섹션에서도 그렇고 알고리즘에서 벽을 많이 느낀다.
문제에서 주어지는 조건에 대해서 파악은 가능하나,
이를 코드화 하기가 너무 힘들었고, 오피스 아워때 듣게된 힌트로 풀어낸 문제 말고는
실제로 처음부터 풀게된 문제는 단 하나도 없었다.
이번 챕터에 Achievement goals를 보며
내가 어떤 부분이 부족해서 문제 해결을 못하였는지 파악하였다.

Achievement goals

  • 알고리즘 문제를 이해하고 전략을 세울 수 있다.
  • 알고리즘 풀이에 필요한 수도 코드를 작성 할 수 있다.
  • 수도 코드에서 세운 전략을 코드로 구현 할 수 있다.
  • 내가 구현한 알고리즘을 자바스크립트 언어로 설명 할 수 있다.

알고리즘 문제를 이해하고 전략을 세울 수 있다.

문제를 이해하는데에 오래걸렸다.
이전에 풀던 문제와 같이 알고리즘 문제에서도 문제에 대해서 설명하고,
어떤 결과값을 기대하는지도 알려준다.
하지만 스토리 텔링 형식이다보니, 익숙치 않아서일까?
이상하게 알고리즘 문제는 어떤 문제인지 이해하는데도 오래걸린다.
어떤 문제인지 이해를 못하니 당연히 전략을 세울 수 없었다.
물론 이해한 문제도 있었으나, 전략을 어디서부터 세워야할지도 감을 못잡았다.

알고리즘 풀이에 필요한 수도 코드를 작성 할 수 있다.

이번 챕터에서 가장 못한 부분인것같다.
간신히 문제를 이해 했을때, 수도 코드를 작성 하려 했으나,
전략의 초반 몇줄 적고 바로 코드로 작성 하려 드니 길을 잃을때가 많았다.
실제로 스프린트 리뷰때 크루분께서는 알고리즘을 풀때 바로 코드로 쓰지말고,
충분히 생각하고, 손코딩 or 수도 코드를 작성하며 로직을 구성하는데
시간을 대부분 투자하고, 실제 코드를 작성하는 시간은 얼마 안되야한다고 했다.
그동안 나는 수도 코드의 중요성을 망각하고, 머리로만 생각후 코드를 작성했었다.

수도 코드에서 세운 전략을 코드로 구현 할 수 있다.

수도 코드를 몇줄이라도 작성하였을때, 이를 코드로 구현할 경우에 길을 잃게 되거나,
생각했던 수도 코드가 틀렸을 경우가 많았다.
이는 충분히 로직을 논리적으로 짜질 못한것이다.
논리적인 사고, 컴퓨터적 사고가 부족했었다.

내가 구현한 알고리즘을 자바스크립트 언어로 설명 할 수 있다.

페어와 함께 문제를 해결하는 과정중, 내가 생각한 로직에 대해서 말로 설명을 하는것은
페어에게 명확히 내 생각을 명확히 전달하기 힘들었다. (나의 경우는 그렇다.)
그래서 말로 전달이 힘들때마다 화면 공유를 넘겨받고 직접 코드를 작성한뒤,
debugger나 console.log로 보여주며 설명할 경우가 많았다.
하지만 이번에는 코드 자체를 아니 로직을 만들어보지도 못해서 이를 행하질 못했다.

그외 문제점

나는 재귀가 생각보다 많이 약하다.
문제에 접근도 못했고 시간을 계속 흐르니 결국 레퍼런스를 보면서 이해하자 하고
레퍼런스를 디버깅 돌릴때 재귀가 나온다면, 길을 잃게 되었다.

나의 문제점 해결하기 위한 노력

  1. 재귀 문제를 많이 풀어서 재귀적 사고력을 키워야겠다.
    (재귀 코플릿 복습)

  2. 자료구조 기초 개념(Stack, Queue, Graph)의 이해
    (자료구조 코플릿 복습)

  3. 크루분께서 개념 이해가 힘들면 로직을 외우라고 하셨다.(DFS, BFS, 조합등)
    (알고리즘은 수학적인 개념이라, 약간의 공식같은게 존재한다. 이해가 힘들면 외우자!)

  4. 문제를 이해하는 연습, 문제를 이해하려면 문제를 푸는 연습이 되어야한다.
    (프로그래머스 문제를 레벨1부터 풀어보자)

profile
내가 보려고 쓰는 블로그

0개의 댓글