본문 바로가기

[자료구조] 스택 with JavaScript 들어가며 SOPT의 세미나에서 스택과 큐에 대해 처음 배웠습니다. 당시 자바스크립트 동작 원리를 배우면서 콜 스택에 대해 배웠는데, 스택이 무엇인지 몰라서, 이해를 못하고 넘어갔던 기억이 납니다. 생각해보면 정확하게 스택이 무엇이고, 스택은 어떻게 처리할 수 있는지 제대로 공부해본 적이 없었던 것 같습니다. 데이터들을 어떤 구조로 어떻게 저장하느냐에 따라 프로그램의 효율과 성능이 차이가 날 수 있다고 합니다. 따라서 스택에 대해 제대로 공부해야 더 효율적이고 성능 좋은 프로그램을 개발할 수 있다고 믿습니다. 어디선가, 늦음을 걱정하지 말고 제대로 하지 않았음을 걱정하라는 이야기를 들은 적이 있습니다. 이제부터라도 제대로 공부하고 싶어 이 글을 정리합니다. 스택은 어디에 쓰일까? 무엇인가 글을 잘못쓰거나 ..
[자료구조] 해시테이블 with JavaScript 들어가며 연결 리스트를 시작으로 자료구조를 본격적으로 공부하려 합니다. 자료구조를 제대로 공부해야만 훗날 근무를 할 때, 더 좋은 코드를 작성할 수 있다고 믿습니다. 그렇다면 자료구조에 대해 깊은 이해가 있는 개발자가 되기 위해 차근차근 공부해보겠습니다. 해시 테이블은 왜 배워야 할까? 유저가 회원가입을 한다고 생각해봅시다. 만약 유저의 아이디와 비밀번호를 DB에 저장하게 될 텐데, 그렇다면 입력받은 데이터를 내부 DB에 그대로 저장해야 할까요? 물론 데이터를 저장해야 합니다. 하지만 입력값 그대로를 저장한다면, 내부 DB가 해커에 의해 뚫리게 되는 순간 개인정보 유출로 인한 피해를 입을 수 있습니다. 그래서 개발자는 비밀번호를 저장할 때, 비밀번호를 암호화해서 저장합니다. 이때 해시 함수를 활용해서 비..
[자료구조] 연결리스트 with JavaScript 들어가며 연결 리스트를 시작으로 자료구조를 본격적으로 공부하려 합니다. 자료구조를 제대로 공부해야만 훗날 근무를 할 때, 더 좋은 코드를 작성할 수 있다고 믿습니다. 그렇다면 연결 리스트는 무엇인지, 언제, 어떻게 쓰이는지 등을 차근차근 공부해보겠습니다. 연결 리스트는 어디에 쓰일까? 연결 리스트는 자바스크립트에서 어떻게 사용할 수 있을까요? 본격적으로 살펴보기 앞서, 연결 리스트에 대해 간단하게 알아보겠습니다. 연결 리스트는 큐와 비슷하게도 무언가를 기다리기 위해 차례대로 줄을 서 있는 구조라고 생각하면 편할 것 같습니다. 이런 연결 리스트는 웹 브라우저의 history 관리를 할 때 사용됩니다. 웹 브라우저에서 여러 사이트들을 돌아다니면, 방문 history에 방문 기록들이 연결 리스트와 같은 구조로..
[자료구조] 시간복잡도 with JavaScript 들어가며 SOPT에서 프로젝트를 진행하고 있습니다. 한 번은 알고리즘을 활용한 API를 개발했습니다. 그때 제 코드를 본 동료가, 이 코드의 시간 복잡도는 얼마나 되는지 물어봤습니다. 하지만 저는 시간 복잡도라는 것 자체를 몰라서 대답할 수 없었습니다. 만약 코드의 시간 복잡도가 좋지 못하다면, 프로젝트에도 악영향을 줄 수 있다는 것을 처음 깨달았습니다. 더 늦기 전에 시간 복잡도를 반드시 공부해야겠다고 생각했습니다. 보다 더 효율적인 코드를 구성할 수 있도록 노력하고자 시간 복잡도를 공부합니다. 시간 복잡도와 Big-O(빅-오)란? 시간 복잡도는 알고리즘을 처리하는 데 얼마의 시간이 걸리는지 알려줍니다. 이런 알고리즘의 시간 복잡도는 주로 빅-오 표기법을 사용하여 나타냅니다. Big-O(빅-오)란 알고..