알고리즘과 공부에 유용한 사이트

Hyebin·2021년 4월 23일
4
post-thumbnail

코딩테스트를 위해 알고리즘 공부는 필수적이다. 꼭 코딩테스트가 아니더라도 알고리즘을 통한 유연한 사고는 프로그래밍에도 도움이 되는 만큼 꾸준히 공부해보려 한다.

알고리즘이란?

사전적의미는 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것이다.

알고리즘하면 어렵다고 느껴지겠지만 결국 우리가 일상생활에서 하는 일련의 행위들도 모두 알고리즘에 속한다.
파스타를 만드는 과정, 집에서 서울역까지 가는 과정 등을 예로 들 수 있다.

프로그래밍에서 어떤 문제를 해결할 때, 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요하다.

알고리즘 문제 풀 때 tip!

  • 프로그래밍 언어 없이도 풀 수 있어야한다.
    프로그래밍 언어는 도구일 뿐이다. 알고리즘에서 중요한 것은 논리적인 접근 방식이므로 의사코드로도 로직을 짤 수 있어야 한다.
  • 문제를 충분히 고민해야한다.
    문제 푸는 시간이 2시간 주어진다면 1시간은 문제를 고민해보도록하자.
    고민하는 것 자체가 알고리즘적 사고에 도움이 된다.
  • 양쪽으로 극단적인 케이스(엣지케이스)를 항상 먼저 생각해야 한다.
    입력이 가장 작을 때와 입력이 가장 클 때
  • 모든 문제는 순서대로 풀도록 노력해야한다.

고려해야할 사항

보통 알고리즘 테스트 메모리 제한 : 128MB, 256MB, 512MB
js에서 primitive date = 8Btye 정도된다.
1000Btye = 1K (천)
1000Kbtye = 1M (백만)
1000Mbtye = 1G (십억)

  • 메모리는 쓸만큼 써라 but 데이터의 개수가 천만개 단위면 그때부터 긴장해야한다. (천만개 === 약 80MB)
  • 수행시간 === 연산횟수
    1억 이상 넘어가면 단순 for-loop / for-loop * logN / 이중루프로는 해결이 안되겠구나 생각하고, 다른 방법을 찾아야한다.

도움 될 만한 사이트

  1. Geeksforgeeks
    알고리즘 예시와 코드가 제공된다. 아쉽게도 자바스크립트로는 제공되지 않고 C++, 자바, 파이썬 코드 예시만 있다.

  2. 시리즈:수학인듯 과학아닌 공학같은 컴퓨터과학/알고리즘 기초

  3. visualgo
    자료구조를 도식화해서 보여주고, 과정을 코드와 함께 순차적으로 볼 수 있다.

  4. Data Structure Visualizations
    visualgo와 비슷하게 데이터 구조나 알고리즘을 시각화시켜 놓은 사이트로 직접 데이터를 넣고 빼보며 학습할 수 있다.

0개의 댓글