세상의 모든 오류
close
프로필 배경
프로필 로고

세상의 모든 오류

  • 분류 전체보기 (26)
    • 알고리즘 (13)
      • 이론공부 (13)
      • Baekjoon (0)
    • 오류해결 (6)
      • React (1)
      • Vue (1)
      • TypeScript (3)
      • 기타 오류 (1)
    • 프론트엔드 (3)
    • 백엔드 (1)
    • Git (1)
    • 프로그래머스 웹풀스택 5기 (2)
  • 홈
  • 태그
  • 방명록
연결 리스트 - 이중 연결 리스트 (Doubly-Linked List)

연결 리스트 - 이중 연결 리스트 (Doubly-Linked List)

단일 연결 리스트는 오로지 한 방향으로만 탐색할 수 있었는데요, 탐색 중에 다시 이전 데이터를 탐색하고 싶을 경우에는 어떻게 해야 할까요? 오늘은 단일 연결 리스트의 단점을 보완하여 양뱡향 탐색이 가능하게 된 이중 연결 리스트에 대해 알아보도록 하겠습니다. 📄 이중 연결 리스트이중 연결 리스트는 이름과 같이 이중으로 앞과 뒤를 연결해주는 리스트입니다.  저번 포스트에서 사용한 노드는 data와 next를 가지고 있었는데요, 여기서 앞 노드를 참조하는 prev이라는 값을 추가해보도록 하겠습니다.prev 값이 앞 노드이기 때문에 화살표를 1) 처럼 표시해도 되지만 2) 처럼 양방향 화살표로 표시하는것이 편리합니다. 참고로 Head의 prev 값은 null입니다. 크게 달라진 점은 없지만 이로 인해 양방향으..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 11. 4.
  • textsms
연결 리스트 - 단일 연결 리스트

연결 리스트 - 단일 연결 리스트

배열의 중간에 데이터를 삽입/삭제할 때의 시간복잡도는 $O(n)$ 이었습니다. 따라서 삽입과 삭제가 자주 발생하는 상황에서는 배열이 비효율적일 수 있는데요, 그럼 어떠한 자료구조를 사용해야 할까요? 오늘은 삽입과 삭제의 연산이 빠른 단일 연결 리스트에 대해 알아보도록 하겠습니다. 📦  노드연결 리스트를 이해하기 위해서 알아야 하는 노드라는 개념이 있습니다. 쉽게 말해 데이터를 담고있는 박스라고 생각하면 됩니다. 연결 리스트들은 이 노드들이 여러개 모여 이루어진 구조인데요, 배열과 달리 한 노드에서 다른 노드로 이동하는 경로를 가지고 있습니다. 이것을 '다른 노드를 참조한다' 라고 합니다. 🚂  단일 연결 리스트그러면 '단일' 연결 리스트는 무엇일까요? 이름에서 알 수 있듯, 단방향(한쪽 방향)으로 연..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 11. 1.
  • textsms
배열(Array) - 배열의 연산과 동적 배열

배열(Array) - 배열의 연산과 동적 배열

데이터를 저장하기 위해 주로 사용되는 배열은 알고리즘에서 가장 기본적인 자료구조라고 할 수 있습니다. 배열을 사용한 연산은 시간복잡도로 따지면 얼마나 오래 걸릴까요? 오늘은 배열의 연산과 동적 배열에 대해서 알아보도록 하겠습니다.  🧮 배열의 연산 ➕ 삽입 배열에 값을 삽입할 때의 시간복잡도는, 데이터가 들어가는 위치에 따라 달라집니다. 하지만 시간복잡도는 항상 최악의 상황을 가정하게 됩니다. 우선 각각의 위치에 따른 시간복잡도를 알아보도록 하겠습니다. ➡️ 맨 앞 또는 중간에 데이터를 삽입하는 경우맨 앞 또는 중간에 데이터를 넣게 되면 이미 들어가 있던 데이터들이 해당 위치를 비우기 위해 뒤로 한칸씩 옮겨가게 됩니다. 따라서 일반적으로 $O(n)$의 시간복잡도를 가지게 됩니다. ➡️ 맨 뒤에 데이터를..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 10. 29.
  • textsms
백준, 코드트리 환경에서 JavaScript로 문제 풀기 (JS 입력 받기)

백준, 코드트리 환경에서 JavaScript로 문제 풀기 (JS 입력 받기)

백준 또는 코드트리와 같은 사이트에서 알고리즘 문제를 풀 때는 입력값을 직접 받아 처리해야 합니다. Javascript로는 어떻게 콘솔 입력을 받아 문제를 풀 수 있는지 알아봅시다. 💻 백준 언어 설정 백준에서 자바스크립트로 알고리즘 문제를 풀기 위해서는 위와 같이 언어 > node.js로 설정해주어야 합니다. (코드트리에는 Javascript 선택지가 있습니다)  💻 fs 모듈 활용하기 자바스크립트에서는 입력을 받기 위해 node.js의 fs(file system) 모듈을 불러와서 readFileSync라는 메서드를 사용하게 되는데요, 파일 내의 데이터를 문자열로 변환하여 변수(input)에 저장하는 방식으로 사용합니다. 이 때, 문자열 끝의 불필요한 공백 등을 없애기 위해 trim() 함수를 함께..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 10. 28.
  • textsms

공간복잡도 (Space Complexity)

프로그래밍에서 메모리는 사용할 수 있는 양이 한정되어 있습니다. 프로그램이 실행 될 때 데이터는 컴퓨터의 기억장치인 램(RAM)에 저장되어 처리되는데요, 이 공간의 크기는 무한하지 않습니다. 프로그램이 요구하는 용량보다 램의 공간이 적거나, 램의 공간은 큰데 실제 사용되는 공간은 아주 작거나 하는 경우 비효율적인 실행이 됩니다. 오늘은 알고리즘이 얼마나 효율적으로 메모리를 사용하는지 분석하는 공간복잡도(Space Complexity)에 대해 알아보도록 하겠습니다.  #️⃣공간복잡도란?공간복잡도는 알고리즘이나 프로그램의 성능을 분석하는 방법 중 하나로, 기억장치에서 차지하는 공간이 얼마만큼인지를 나타내는 방법입니다. 쉽게 말하면 알고리즘이나 프로그램을 실행할 때 얼마나 많은 공간(메모리)을 차지하는지를 나..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 10. 25.
  • textsms
빅 오 표기법으로 표현하는 시간복잡도 (Time Complexity)

빅 오 표기법으로 표현하는 시간복잡도 (Time Complexity)

프로그램의 수행 시간은 알고리즘을 설계할 때 중요하게 고려해야 하는 요소 중 하나이기 때문에 코드를 분석해서 효율성을 따져보는것도 중요합니다. 오늘은 여러가지 연산에 대하여 저번 게시물에서 설명한 점근적 표기법인 빅 오 표기법을 이용한 시간복잡도(Time Complexity)에 대해 알아보도록 하겠습니다. #️⃣빅 오 표기법을 사용하는 이유점근적 표기법에서는 $O,\;\Omega,\;\Theta$ 3가지의 표기법이 있는데, 시간복잡도를 표현 할 때 빅 오 표기법을 사용하는것은 왜일까요? 만약 빅 오메가 $(\Omega)$ 표기법을 사용하게 된다면, 시간복잡도가 너무 낮게 표현될 가능성이 있습니다. 예를 들어 $n^{6}+1$이라는 식이 있을 때, 빅 오메가 표기법으로는 $ n^{6}+1 =\Omega(n..

  • format_list_bulleted 알고리즘/이론공부
  • · 2024. 10. 24.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (26)
    • 알고리즘 (13)
      • 이론공부 (13)
      • Baekjoon (0)
    • 오류해결 (6)
      • React (1)
      • Vue (1)
      • TypeScript (3)
      • 기타 오류 (1)
    • 프론트엔드 (3)
    • 백엔드 (1)
    • Git (1)
    • 프로그래머스 웹풀스택 5기 (2)
최근 글
인기 글
최근 댓글
태그
  • #React
  • #알고리즘
  • #티스토리챌린지
  • #javascript
  • #오블완
  • #빅오표기법
  • #Algorithm
  • #typescript
  • #리액트
  • #타입스크립트
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바