통계학 세상
close
프로필 배경
프로필 로고

통계학 세상

  • 분류 전체보기 (1488) N
    • 다시보는 통계학 (28)
    • 딥러닝 (306)
      • 딥러닝 기초 (63)
      • Computer Vision (76)
      • NLP (59)
      • Machine Reading Comprehensi.. (21)
      • light weight modeling (47)
      • Graph (17)
      • recommendation system (7)
      • reinforcement learning (2)
      • LLM (6)
      • Deep Learning Specializatio.. (7)
      • Diffusion (1)
    • AI 논문 (45)
      • AI trend research (42)
      • 고전이 된 AI 논문 (3)
    • 데이터 분석 프로젝트 연습 (0)
    • 프로그래밍 (294) N
      • 프로그래밍 개론 (7)
      • Python (82) N
      • Java (15)
      • C++ (9)
      • C# (0)
      • 비전공자를 위한 자바스크립트 (8)
      • Pandas (10)
      • Numpy (8)
      • Pytorch (30)
      • SQL (23)
      • Unity&C# (27)
      • Tensorflow.js (2)
      • git 가이드 (10)
      • 비전공자를 위한 Web (4)
      • React (17)
      • node.js (17)
      • FastAPI (7)
      • docker & jenkins (10)
      • R 프로그래밍 (8)
    • 알고리즘 (500)
      • 알고리즘 일반 (61)
      • Java 기초 (22)
      • C++ 기초 (22)
      • 브루트포스 (22)
      • DFS BFS 정복기 (28)
      • 그래프 이론 정복기 (21)
      • 분리집합 (7)
      • 최단거리 알고리즘 (21)
      • 최소 스패닝 트리 (5)
      • 다이나믹 프로그래밍 (64)
      • 구현,시뮬레이션 (11)
      • 이분 탐색 (17)
      • 정렬 알고리즘 (9)
      • 그리디 알고리즘 (30)
      • 투 포인터 알고리즘 (9)
      • 누적 합 알고리즘 (14)
      • 문자열 알고리즘 (17)
      • 자료구조(스택,큐,해시맵) (14)
      • 순열 사이클 분할 (1)
      • 슬라이딩 윈도우 (2)
      • 연결리스트 (3)
      • 분할 정복 (4)
      • 위상정렬 (3)
      • 세그먼트 트리 (14)
      • 유량 알고리즘 (1)
      • 이분 매칭 (2)
      • 고급 자료구조 (3)
      • 희소배열(더블링) (2)
      • 전처리 (1)
      • 게임이론 (8)
      • 비트마스킹 (8)
      • 애드 혹 알고리즘 (33)
      • 중간에서 만나기 (4)
      • 확률론 알고리즘 (3)
      • 선형대수학 알고리즘 (3)
      • 압축 알고리즘 (2)
      • 오프라인 쿼리 (1)
      • 정밀도 (3)
      • 재귀 연습장 (1)
      • 비둘기집 원리 (2)
      • 휴리스틱 (1)
      • 고급 알고리즘 (1)
      • 알고리즘 논문 (0)
    • 경쟁 프로그래밍 (22)
      • Atcoder (22)
    • 책 읽기 (79)
      • 비전공자도 이해할 수 있는 AI지식 (51)
      • 수학보다 데이터 문해력 (28)
    • 3D 모델링 (0)
      • blender (0)
    • 정수론 (75)
    • 선형대수학 (28)
    • 조합론 (11)
    • 정형데이터 (25)
    • 정보이론 (3)
    • Visualization (7)
    • 기하학 (29)
    • 컴퓨터과학(CS) (15)
    • 대수학 (5)
    • 데이터 해석 (6)
    • 금융 (1)
    • 읽을거리 (9)
  • 홈
  • 태그
  • 방명록

Python 랜덤 해시를 이용한 해시 충돌 피하기

1. python dict의 내부 구현 원리 간단하게 Python에서 dict {key:value}는 내부적으로 2가지 배열을 가지고 구현된다 indices : 어떤 위치에 데이터가 있는지 인덱스만 기록 entries: 데이터가 들어온 순서대로 [해시값, key, value]를 저장 초기 상태는 보통 8칸으로 시작하고, indices = [-1,-1,-1,-1,-1,-1,-1,-1] entries = [] 만약 {} 빈 dict에 {10:3}으로 저장한다면...? key의 hash값을 계산하고 배열 크기로 나눈 나머지를 구한다. 10의 hash는 10이고, 이를 8로 나눈 나머지 2를 구해 indices의 2번 칸에 넣는다. indices = [-1,-1,0,-1,-1,-1,-1,-1] 그리고 entr..

  • format_list_bulleted 프로그래밍/Python
  • · 2026. 8. 25.
  • textsms

배열의 모든 수의 쌍의 곱의 합을 O(N)에 구하는 방법

https://atcoder.jp/contests/abc177/tasks/abc177_c C - Sum of product of pairsAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp 크기 N인 배열 $A_{1}, A_{2}, ..., A_{N}$이 주어진다. 이때, 이 배열의 가능한 모든 인덱스 쌍 (i,j)에 대해 $A_{i} * A_{j}$의 합을 어떻게 구할까? 여기서 i 가장 쉽게 생각할 수 있는 방법은 당연히 모든 인덱스 쌍을 순회해서 구하는 $O(N^{2})$방법이다. n = int(input())A =..

  • format_list_bulleted 대수학
  • · 2026. 8. 17.
  • textsms

배열을 heap으로 만드는데 O(N)이면 충분하다

파이썬에서 주어진 리스트 배열 A를 heap으로 만드는 방법은 적어도 2가지가 있다. 첫번째는 빈 리스트를 만들고 heappush를 이용해서 하나씩 집어넣는 방법 A의 원소를 하나씩 순회해서 heappush하므로 O(NlogN)이다. 두번째 방법은 heapq에서 지원하는 heapify()를 사용하는 것이다. 집어넣기만 하면 주어진 배열을 바로 heap으로 만들어준다. 이 방법의 시간복잡도는... 놀랍게도 O(N)이다. 실제로 두 방법의 시간을 비교해보면.. import heapqimport randomimport time# 테스트할 데이터 크기 목록 (1만, 10만, 100만, 500만)data_sizes = [10000, 100000, 1000000, 5000000]print(f"{'Data Si..

  • format_list_bulleted 프로그래밍/Python
  • · 2026. 7. 21.
  • textsms

직접 구현하는 것보다 내장함수를 제대로 쓸 수 있으면 속도가 빠르다

알고리즘을 공부하면서 내장함수를 쓰는게 좋을까? 직접 구현하는게 좋을까?는 누구나 고민하는 부분이다. 크기 n인 배열에서 최댓값을 구하고자 할때 어떻게 하는가? max(A)로 바로 구하거나, for문을 돌아서 최댓값을 갱신해서 찾는다. 어떻게 해도 둘의 시간복잡도는 O(N)이다. 그렇지만 실행시간에는 확실한 차이가 있다. gemini를 이용해 실제 둘의 실행시간의 테스트 코드를 짜서 비교해본다. import timeimport random# 1. 테스트 환경 셋팅N = 1000000 # 100만 개의 데이터print(f"🚀 테스트 데이터 생성 중... (크기: {N}개)")A = [random.randint(1, 1000000) for _ in range(N)]print("✅ 데이터 준비 완료!\n")..

  • format_list_bulleted 프로그래밍/Python
  • · 2026. 7. 20.
  • textsms

정지 문제(Halting Problem) - 최고의 컴퓨터도 만들 수 없는 프로그램이 존재한다

1. 정지 문제(Halting problem) 프로그램을 만드는 사람이라면 누구나 이런 생각을 한다. "내가 만든 프로그램을 실행하면 정상적으로 종료될지, 무한 루프를 돌지, 실행하지 않고 아는 방법이 있을까?" 그러면 내가 짠 프로그램 D가 정상적으로 종료되는지, 무한 루프를 도는지 검사해주는 또 다른 프로그램 H를 만들면 되는거 아닌가? 그러한 프로그램 H가 존재한다고 가정해보자. H는 분석할 프로그램 D와 프로그램 D의 입력 I를 입력으로 받고, D가 정상적으로 종료하면 True 무한루프를 돌면 False를 유한 시간 내에 return하는 함수이다. 어떤 프로그램 P는 프로그램 H에 다음과 같이 물어본다."프로그램 D에 입력으로 프로그램 D를 주면 어떻게 되냐?" 만약 H가 정상적으로 종료된다라고 ..

  • format_list_bulleted 컴퓨터과학(CS)
  • · 2026. 7. 14.
  • textsms

보이어 무어의 과반수 투표 알고리즘(Boyer-Moore Majority Vote Algorithm)

크기 n인 배열에 있는 원소들 중에서, 개수가 n//2 + 1개 이상인 원소가 하나 존재한다고 하자. 즉, 절반을 넘는 개수를 가진 원소가 무조건 하나가 있을때 이 원소를 찾고 싶다. 어떻게 찾을 수 있을까? 예를 들어 [2,2,1,3,2,2]에서 2는 개수가 4개있고 크기 6인 배열에서 이것이 과반수 이상의 원소이다. 가장 쉬운 방법은 O(N)으로 배열을 순회해서 각 원소의 개수를 모두 찾아 hash에 저장해둔다. 이 hash에서 가장 원소의 개수가 많은 원소를 찾으면 된다. 이러면 시간복잡도 O(N)에 공간복잡도 O(N)에 찾을 수 있다. class Solution: def majorityElement(self, nums: List[int]) -> int: h = {}..

  • format_list_bulleted 컴퓨터과학(CS)
  • · 2026. 6. 25.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 248
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (1488) N
    • 다시보는 통계학 (28)
    • 딥러닝 (306)
      • 딥러닝 기초 (63)
      • Computer Vision (76)
      • NLP (59)
      • Machine Reading Comprehensi.. (21)
      • light weight modeling (47)
      • Graph (17)
      • recommendation system (7)
      • reinforcement learning (2)
      • LLM (6)
      • Deep Learning Specializatio.. (7)
      • Diffusion (1)
    • AI 논문 (45)
      • AI trend research (42)
      • 고전이 된 AI 논문 (3)
    • 데이터 분석 프로젝트 연습 (0)
    • 프로그래밍 (294) N
      • 프로그래밍 개론 (7)
      • Python (82) N
      • Java (15)
      • C++ (9)
      • C# (0)
      • 비전공자를 위한 자바스크립트 (8)
      • Pandas (10)
      • Numpy (8)
      • Pytorch (30)
      • SQL (23)
      • Unity&C# (27)
      • Tensorflow.js (2)
      • git 가이드 (10)
      • 비전공자를 위한 Web (4)
      • React (17)
      • node.js (17)
      • FastAPI (7)
      • docker & jenkins (10)
      • R 프로그래밍 (8)
    • 알고리즘 (500)
      • 알고리즘 일반 (61)
      • Java 기초 (22)
      • C++ 기초 (22)
      • 브루트포스 (22)
      • DFS BFS 정복기 (28)
      • 그래프 이론 정복기 (21)
      • 분리집합 (7)
      • 최단거리 알고리즘 (21)
      • 최소 스패닝 트리 (5)
      • 다이나믹 프로그래밍 (64)
      • 구현,시뮬레이션 (11)
      • 이분 탐색 (17)
      • 정렬 알고리즘 (9)
      • 그리디 알고리즘 (30)
      • 투 포인터 알고리즘 (9)
      • 누적 합 알고리즘 (14)
      • 문자열 알고리즘 (17)
      • 자료구조(스택,큐,해시맵) (14)
      • 순열 사이클 분할 (1)
      • 슬라이딩 윈도우 (2)
      • 연결리스트 (3)
      • 분할 정복 (4)
      • 위상정렬 (3)
      • 세그먼트 트리 (14)
      • 유량 알고리즘 (1)
      • 이분 매칭 (2)
      • 고급 자료구조 (3)
      • 희소배열(더블링) (2)
      • 전처리 (1)
      • 게임이론 (8)
      • 비트마스킹 (8)
      • 애드 혹 알고리즘 (33)
      • 중간에서 만나기 (4)
      • 확률론 알고리즘 (3)
      • 선형대수학 알고리즘 (3)
      • 압축 알고리즘 (2)
      • 오프라인 쿼리 (1)
      • 정밀도 (3)
      • 재귀 연습장 (1)
      • 비둘기집 원리 (2)
      • 휴리스틱 (1)
      • 고급 알고리즘 (1)
      • 알고리즘 논문 (0)
    • 경쟁 프로그래밍 (22)
      • Atcoder (22)
    • 책 읽기 (79)
      • 비전공자도 이해할 수 있는 AI지식 (51)
      • 수학보다 데이터 문해력 (28)
    • 3D 모델링 (0)
      • blender (0)
    • 정수론 (75)
    • 선형대수학 (28)
    • 조합론 (11)
    • 정형데이터 (25)
    • 정보이론 (3)
    • Visualization (7)
    • 기하학 (29)
    • 컴퓨터과학(CS) (15)
    • 대수학 (5)
    • 데이터 해석 (6)
    • 금융 (1)
    • 읽을거리 (9)
최근 글
인기 글
최근 댓글
태그
  • #코딩테스트
  • #머신러닝
  • #정수론
  • #python
  • #프로그래밍
  • #백준
  • #NLP
  • #딥러닝
  • #알고리즘
  • #파이썬
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바