zero-week's IT blog
close
프로필 배경
프로필 로고

zero-week's IT blog

  • 분류 전체보기
    • CS(Computer Science) 이론
      • 이산수학
      • 알고리즘
      • 디자인패턴
      • 자료구조
    • JAVA Programming
      • Java
      • JSP
      • Spring
      • SpringBoot
      • Thymeleaf
    • PYTHON Programming
      • Python
      • Django
      • Flask
      • FastAPI
    • JAVASCRIPT Programming
      • Javascript
      • Node.js
      • JQuery
    • C# Programming
      • C#
      • Winform
      • WPF
    • C Programming
      • C
    • WEB PUBLISHING
      • HTML-CSS
    • DATABASE
      • MySQL & MariaDB
      • MSSQL
      • 몽고DB
    • Tools & Functions
      • 개발도구 사용방법
      • Project 기능들
      • 코딩 테스트 복기
  • 홈
  • 태그
  • 방명록

[자료구조] 해시맵

1. 해시맵해시맵이란 데이터 키와 값이 쌍으로 구성되어있는 자료구조입니다. 주로 데이터를 빠르게 검색하거나 저장할때 사용되며 내부적으로 해시함수를 이용해 저장할 인덱스를 계산합니다. 해시함수란 임의 길이의 입력(문자열, 객체 등)을 고정 길이의 값(해시값, 해시 코드)으로 매핑하는 함수입니다예를 들어 살펴보겠습니다. 아래와 같은 자료가 있다고 생각해보겠습니다.KeyValuecat10dog20fox30bird40frog50 이를 해시 인덱스로 변환하는 건 아래와 같습니다. (무조건 이런방식으로 계산되는 것은 아닙니다.)Key각 문자의 아스키 코드 변환아스키코드의 합(sum)해시 인덱스 (Sum % 8)cata`j">c(99) + a(97) + t(116)3120doga`j">d(100) + o(111) +..

  • format_list_bulleted CS(Computer Science) 이론/자료구조
  • · 2025. 9. 17.
  • textsms

[알고리즘] 이진탐색

1. 이진탐색이진탐색은 정렬된 배열에서 특정값을 효율적으로 찾는 알고리즘입니다.가장 먼저 가운데 값을 탐색합니다. 그리고 찾는 값이 가운데값보다 크다면 오른쪽 그룹을 살펴보고 작다면 왼쪽 그룹을 살펴봅니다. 그리고 해당 그룹의 가운데 값을 탐색합니다. 이를 재귀적으로 반복하여 원하는 값을 찾는 탐색이 이진탐색입니다.전체를 순회하는 것보다 절반씩 나누고 필요없는 부분은 순회하지 않으므로 효율적인 알고리즘입니다.다만 이진탐색 방식 때문에 정렬된 배열에서만 효과가 있다는 단점이 있습니다. 이를 파이썬과 자바코드로 확인해보겠습니다 파이썬def binary_search_iter(arr, target): left, right = 0, len(arr) - 1 while left 자바public class..

  • format_list_bulleted CS(Computer Science) 이론/알고리즘
  • · 2025. 9. 15.
  • textsms

[자료구조] 힙(heap)

1. 힙이란?힙이란 어떤 구조냐에 따라 위에서부터 아래로 자식으로 내려갈수록 값이 커지거나 자식으로 내려갈수록 값이 작아지는 것입니다. 즉, 높이에 따라 정렬된다고 볼 수 있습니다.힙이 최소힙일때는 루트의 값이 가장 작고, 힙이 최대힙을때는 루트의 값이 가장 큽니다.그리고 힙의 특징 중 하나는 완전이진트리라는 것입니다. 즉, 높이에 따른 노드의 값이 모두 채워져야 자식노드로 내려갈 수 있다는 것입니다. 최소힙은 아래 그림으로 확인하실 수 있습니다. 최대힙은 반대로 가장 큰 값이 루트에 있습니다. 다만 주의해야할 것은 같은 높이의 모든 노드값이 한단계 위나 아래의 모든 노드보다 크거나 작지는 않다는 것입니다.예를 들면 부모노드와 같은 높이의 다른 노드를 삼촌노드라고 했을 때 자식노드가 삼촌노드보다는 무조건..

  • format_list_bulleted CS(Computer Science) 이론/자료구조
  • · 2025. 9. 11.
  • textsms

[JAVA] 래퍼클래스

1. 래퍼클래스란?래퍼클래스는 기본 자료형을 컬렉션 프레임워크 등에 사용할 수 있도록 객체로 만들어주는 클래스입니다. 따라서 자료형의 개수만큼의 클래스가 있습니다. 래퍼클래스는 기본자료형만으로는 할 수 없는 다양한 메서드 기능을 지원합니다. 그리고 기본 자료형은 null이 불가능하지만 래퍼클래스는 null이 가능합니다. 다만 단순연산에는 오히려 메모리 증가만 발생할 수 있기 때문에 좋지않습니다. 2. 코드 예제아래 코드를 통해 래퍼클래스를 확인해보겠습니다. import java.util.Scanner;import java.util.*;public class Solution { public static void main(String[] args) { // int 타입 int ..

  • format_list_bulleted JAVA Programming/Java
  • · 2025. 9. 11.
  • textsms

[JAVA] 컬렉션 프레임워크

1. 컬렉션(Collection)이란?자바에서 컬렉션(Collection) 은 자료구조를 객체화해서 데이터를 효율적으로 저장, 검색, 관리할 수 있게 해주는 프레임워크입니다.데이터를 배열처럼 모아두고 조작할 수 있지만 배열과 달리 동적으로 변경하는 것도 가능합니다.다만 컬렉션은 기본자료형에서는 사용이 불가능하고 객체로 만들어서 사용해야합니다. 2. 장단점1) 장점컬렉션은 동적으로 변경하는 것이 가능하기 때문에 배열보다 유연하게 사용가능합니다. 또한 컬렉션의 종류에는 List, Set, Map, Queue등 다양한 자료구조가 있으며 add, remove,contains, sort 등 API도 많기 때문에 여러가지 상황에 맞춰서 사용이 가능합니다. 또한 제네릭과 함께 사용하기 때문에 타입 안정성도 있습니다...

  • format_list_bulleted JAVA Programming/Java
  • · 2025. 9. 10.
  • textsms

[JAVA] StringBuilder VS StringBuffer

1. 공통점StringBuilder 클래스와 StringBuffer 클래스는 모두 가변 문자열 클래스입니다.가변 구조이기 때문에 내부적으로 버퍼를 사용하여 문자열을 저장합니다. 즉, 새로운 문자열을 만들지않고 버퍼안에서 값을 수정하는 것입니다. 따라서 문자열을 합치거나 수정할때 불변 문자열처럼 새로운 객체를 생성하지않기 때문에 메모리 효율적입니다. 이러한 점 때문에 문자열을 자주 변경할 경우에 많이 사용합니다. 그리고 두개의 클래스는 거의 대부분의 메서드가 동일합니다. 주 사용 메서드는 아래와 같습니다.append(String str) : 주어진 문자열(str)을 현재 StringBuilder 객체의 끝에 추가합니다.insert(int offset, String str) : 주어진 문자열(str)을 지..

  • format_list_bulleted JAVA Programming/Java
  • · 2025. 9. 10.
  • textsms

[Python] 파이썬 크롤링 도구 playwright

1. playwright란playwright란 마이크로소프트 사에서 만들고 유지관리하고 있는 크롤링 도구입니다. 매번 드라이버를 연결해야하는 셀레니움과 달리 처음에 한번 크로미넘, 파이어폭스, 웹킷등을 설치하고나면 해당 브라우저를 계속 사용합니다. 물론 셀레니움처럼 설치되어있는 크롬을 사용하는 것도 가능합니다. 장점은 node의 퍼펫티어 구동방식과 유사하여 속도가 매우빠르며 모던 웹페이지에 적합하다고 합니다. 단점으로는 셀레니움에 비해 자료가 적다는 것입니다. 공식문서는 아래와 같습니다.https://playwright.dev/ Fast and reliable end-to-end testing for modern web apps | PlaywrightCross-browser end-to-end test..

  • format_list_bulleted PYTHON Programming/Python
  • · 2025. 9. 8.
  • textsms

[자료구조] 트리

1. 이진트리이진트리는 말그대로 나무형태를 가진 자료구조입니다. 위 그림에서 가장 맨위에 있는 빨간 공이 root노드가 됩니다. 그리고 각 이진트리에서 각 노드는 최대 2개의 자식 노드를 가질 수 있습니다. 노드들 중 자식이 없는 노드는 leaf노드라고 합니다. 그리고 root로부터 leaf까지의 거리를 높이라고 합니다. 트리의 구조를 파이썬과 자바의 코드로 확인해보겠습니다. 파이썬class Node: def __init__(self, value): self.value = value self.left = None self.right = Nonedef preorder(node): # root를 가장 먼저 출력 후 왼쪽으로 가면서 먼저 출력 -> 1단계씩 올라가면..

  • format_list_bulleted CS(Computer Science) 이론/자료구조
  • · 2025. 9. 7.
  • textsms

[자료구조] 큐(QUEUE)

1. 큐(queue)란큐란 자료구조의 하나로서 먼저 들어간 자료가 먼저 출력되는 선입선출의 방식을 가지고 있는 자료구조입니다. 이를 FIFO(First In First Out)이라고도 합니다. 위 그림에서 볼 수 있듯이 큐는 아래에 뚫린 통의 형태라고 할 수 있습니다.큐에는 데이터를 삽입하는 enqueue와 데이터를 제거하는 dequeue가 있습니다. 큐에서의 시간복잡도는 삽입, 제거 모두 O(1)입니다. 큐에도 배열기반 또는 연결리스트 기반으로 구현가능합니다.그런데 큐는 스택과 달리 배열기반에서는 주의할것이 있습니다. 배열기반에서 큐를 구현하려면 원형 배열에서 구현해야합니다. 왜냐하면 선형 큐에서는 첫번째 요쇼의 인덱스와 마지막 요소의 인덱스가 고정되어있어 데이터를 제거 후 데이터 삽입이 안되는 반..

  • format_list_bulleted CS(Computer Science) 이론/자료구조
  • · 2025. 9. 7.
  • textsms

[자료구조] 스택

1. 스택이란스택이란 자료구조의 하나로서 마지막에 들어간 자료가 먼저 나오는 구조입니다. 이를 LIFO(Last In First Out)이라고도 하며, 후입선출 방식이라고도 합니다. 위 그림을 보면 알 수 있듯이 아래에 막힌 통 형태라고 생각하면 좋습니다. 스택에는 3가지 기능이 있습니다. 자료를 넣는 push, 자료를 꺼내는 pop, 그리고 맨위에 무엇이 있는지 확인하는 peek가 있습니다.3가지의 시간복잡도는 모두 O(1)입니다. 왜냐하면 스택 내부의 데이터를 순회하지 않기 때문입니다. 이러한 스택은 브라우저나 문서에서 많이 사용합니다. 브라우저를 실행하여 이벤트를 실행할때 스택에 push되고 뒤로가기 버튼을 누르면 pop이 실행된다고 할 수 있습니다. 문서 작업시에도 컨트롤 z가 스택의 pop기능..

  • format_list_bulleted CS(Computer Science) 이론/자료구조
  • · 2025. 9. 6.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 19
  • navigate_next
전체 방문자
오늘
어제
전체
전체 카테고리
  • 분류 전체보기
    • CS(Computer Science) 이론
      • 이산수학
      • 알고리즘
      • 디자인패턴
      • 자료구조
    • JAVA Programming
      • Java
      • JSP
      • Spring
      • SpringBoot
      • Thymeleaf
    • PYTHON Programming
      • Python
      • Django
      • Flask
      • FastAPI
    • JAVASCRIPT Programming
      • Javascript
      • Node.js
      • JQuery
    • C# Programming
      • C#
      • Winform
      • WPF
    • C Programming
      • C
    • WEB PUBLISHING
      • HTML-CSS
    • DATABASE
      • MySQL & MariaDB
      • MSSQL
      • 몽고DB
    • Tools & Functions
      • 개발도구 사용방법
      • Project 기능들
      • 코딩 테스트 복기
공지사항
최근 글
인기 글
최근 댓글
태그
  • #yalco
  • #나도코딩
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바