분류 전체보기 106

[프로그래머스/Lv2] 보석쇼핑 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제를 보고 백준 과일 탕후루 문제랑 비슷하다고 생각났지만(투포인터, 슬라이딩 윈도우) 왠지 그냥 비효율적으로 풀어보고싶어서 냅다 풀어봤는데 당연히 시간초과 나고 정확도 검사도 틀렸다. # 실패 코드 1def solution(gems): answer = [] gems_set = set(gems) gems_dict = {g: 0 for g in gems_set} for idx, gem in enumerate(g..

[algorithm] 플로이드-워셜 (Floyd-Warshall) 알고리즘

🧐 플로이드-워셜 알고리즘: 모든 노드 간 최단 경로 찾기 1. 플로이드-워셜 알고리즘이란?플로이드-워셜(Floyd-Warshall) 알고리즘은 그래프의 모든 노드 쌍 간 최단 경로를 찾는 알고리즘입니다.동적 프로그래밍(Dynamic Programming) 기법을 사용하며, 다익스트라와 다르게 음수 가중치가 있는 그래프도 처리할 수 있다는 장점이 있습니다. 2. 알고리즘의 동작 원리이 알고리즘은 특정한 경유지 노드(k)를 거쳐 가는 경우와 바로 가는 경우를 비교하며 최단 경로를 갱신합니다.점화식:dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])dist[i][j]: 노드 i에서 노드 j로 가는 현재까지의 최단 거리k: 경유하는 노드 3. 알고리즘 구현INF ..

[백준13144/골드4] List of Unique Numbers - Python

https://www.acmicpc.net/problem/13144 부분수열을 만들떄, 부분 수열의 끝 점을 정한 후 그 점 까지 중복된 수가 안나오는 제일 긴 시작점을 구했다. (for end in range(N))그리고 그 부분수열에서 시작점을 변경하며 나올 수 있는 부분수열의 수를 더해줬다. (end - start + 1) # 성공 코드N = int(input())numbers = list(map(int, input().split()))select = set() # 선택된 수 (슬라이딩 윈도우 안의 수)start = 0 # 시작점result = 0for end in range(N): # 끝점 0번 인덱스부터 끝까지 순회 # 숫자가 중복되면 시작점 제거 후 다음 시작점 탐색 while n..

[Client-side Navigation] Next.js 13에서 페이지 이동 및 새로고침 감지하기

🏃‍♂️ [Client-side Navigation] Next.js 13에서 페이지 이동 및 새로고침 감지하기   Next.js를 사용하여 일기 작성 기능을 개발하면서, 작성 도중 페이지를 벗어나려 할 때 임시 저장을 유도하는 모달을 추가해야 했다.Next.js 12까지는 next/router를 사용해서 쉽게 구현 가능하다던데, Next.js 13부터 next/navigation을 사용하게 되면서 next/router의 이벤트 감지 기능이 사라져, 페이지 이동을 직접 감지하는 방법을 찾아야 했다.  💡 목표사용자가 일기 작성 중에 페이지를 벗어나려 할 때 확인 모달을 띄운다.Next.js 13에서 router.push, router.replace, popstate, beforeunload 등을 활용하..

[Web] HTTP와 HTTPS의 차이 및 HTTPS 사용의 장점

📖 HTTP와 HTTPS의 차이 및 HTTPS 사용의 장점웹사이트를 방문할 때, 주소창에 http:// 또는 https:// 는 웹에서 데이터를 주고받는 방식(프로토콜)으로, 보안 측면에서 큰 차이가 있습니다. 1. HTTP와 HTTPS의 차이 ✅ HTTP (HyperText Transfer Protocol)란?HTTP는 웹사이트와 사용자의 브라우저(클라이언트) 간에 데이터를 주고받는 기본적인 프로토콜입니다.하지만 HTTP에는 암호화 기능이 없어 데이터를 주고받는 과정에서 해킹, 도청, 변조 위험이 존재합니다.예를 들어, HTTP 사이트에서 로그인할 경우 해커가 중간에서 데이터를 가로채면, 아이디와 비밀번호가 노출될 수 있습니다. ✅ HTTPS (HyperText Transfer Protocol Sec..

CS 2025.02.28

[백준2422/실버4] 한윤정이 이탈리아에서 아이스크림을 사먹는데 - Python

https://www.acmicpc.net/problem/2422 처음엔 그냥 모든 세가지 조합을 구한 후 웩인 조합이 들어갔는지 확인해줬다.  # 실패 코드N, M = map(int, input().split())arr = [list(map(int, input().split())) for _ in range(M)]result = 0def dfs(i, start, select): global result if i == 3: if can_eat(select): result += 1 return for j in range(start, N + 1): if j not in select: dfs(i + 1, j + 1, ..

[OS] 프로세스와 스레드

📖 프로세스와 스레드의 차이: CPU 성능과 병렬 처리 관점 1. 프로세스와 스레드란?컴퓨터에서 여러 작업을 수행할 때, 운영체제(OS)는 프로그램을 실행하고, 이를 효율적으로 관리해야 한다.이때 프로세스(Process)와 스레드(Thread) 개념이 등장한다. 2. 프로세스(Process)란?운영체제로부터 CPU 자원을 할당받는 작업의 단위실행 중인 프로그램의 인스턴스 (실행 중인 프로그램 하나)독립적인 메모리 공간을 할당받아 실행됨하나의 프로세스는 다른 프로세스에 직접 접근할 수 없다(프로세스 간 데이터 공유는 IPC (Inter-Process Communication) 방식 필요하나의 프로세스는 여러 개의 스레드를 포함할 수 있음 ✅ 예시브라우저에서 탭 하나당 하나의 프로세스VSCode, Chro..

CS 2025.02.27

[백준1644/골드3] 소수의 연속합 - Python

https://www.acmicpc.net/problem/1644 소수를 빠르게 구할 때 에라토스테네스의 체로 구한다는거 알고만 있고, 그게 어떤 방식인지 몰라서 먼저 백준 2960 - 에라토스테네스의 체 문제 먼저 풀어봤다.그리고 이 문제는 N까지의 수 중, 소수만 따로 리스트를 만들고 시작했다. # 2부터 N까지의 수 중, 소수만 담긴 리스트 반환하기N = int(input())def prime(n): numbers = [True] * (n+1) numbers[0] = numbers[1] = False for i in range(2, n+1): if numbers[i]: for j in range(2 * i, n+1, i): ..

[Web] 캐시(Cache)

1. 캐시(Cache)란?자주 사용하는 데이터를 저장하여 빠르게 접근할 수 있도록 하는 고속 메모리 또는 저장소를 의미한다.컴퓨터에서는 CPU와 메모리(RAM) 사이의 속도 차이를 보완하기 위해 캐시를 사용한다.캐시는 보다 빠른 데이터 접근을 가능하게 하여 시스템 성능을 크게 향상시킨다.  ✅ 캐시가 필요한 이유캐시는 데이터나 값을 미리 복사해 놓은 임시 저장소이다.데이터를 접근하는 시간이 오래 걸리거나 계산 시간이 오래 걸리는 로직에서 사용된다.캐시가 없다면변경되지 않는 고정 데이터조차 매번 네트워크를 통해 다운받아야 하므로 비용과 성능 문제가 발생한다.불필요한 데이터 요청이 반복되면 데이터 비용이 증가하고 사용자의 로딩 속도가 느려지는 경험을 초래한다.캐시를 사용하면새로고침 시 반복되는 데이터를 네트..

CS 2025.02.26

[백준17503/실버1] 맥주 축제 - Python

https://www.acmicpc.net/problem/17503 어떻게 풀어야할지 꽤 오래 고민했다.먼저 힙 없이 정렬하고 풀었는데 시간초과나서 힙으로 다시 구했다. 1. 도수레벨 기준으로 정렬 (도수 낮은 것 부터 순회하기 위해)2. 맥주 리스트 순회하면서 하나씩 선택하기2-1. 선택할 때 N개 아직 다 안찼으면 heappush3. push 하고나서 N개 꽉 찼으면 선호도 M 채웠는지 확인3-1. 선호도 M 채웠으면 최소 도수 레벨 갱신 (도수 레벨도 작은 것부터 순회하므로 현재 값으로 갱신)3-2. 선호도 M 못채웠으면 가장 작은 선호도를 가진 맥주 뺴기 heappop4. N개 맥주 다 못채웠으면 계속 for문 순회하며 반복 # 성공 코드 1# 89144 KB, 732 msimport sysinp..

algorithm/Greedy 2025.02.25