전체 글 277

[1분 면접] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까 ?

코어가 많은 경우많은 코어는 CPU의 병렬 처리 성능을 향상이를 최대한 활용하기 위해서는 소프트웨어가 멀티코어 환경에 최적화되어야 함단일 스레드 작업이 주를 이룰 경우, 추가 코어의 이점을 잘 활용 못함또한 코어 수가 많아질수록 CPU의 비용과 전력 소비가 증가해 발열 관리 복잡 프로세스가 많은 경우각 프로세스는 독립된 메모리 공간을 가지는데, 프로세스가 동시에 실행되면 메모리 사용량 급격히 증가프로세스 생성 및 관리에도 많은 시스템 자원이 소모 IPC (프로세스 간 통신)이 필요한 경우 성능 저하 발생많은 프로세스는 프로세스 간 Context Switching에 발생하는 오버헤드 수반 스레드가 많은 경우스레드가 많아지면, 스레드 간 Context Switching이 자주 일어나 CPU 자원이 스레드 관..

[1분 면접] 단위 테스트와 통합 테스트의 차이점

단위 테스트소프트웨어의 가장 작은 단위 (개별 매서드, 함수)의 기능을 검증하는 테스트 통합 테스트개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트 모듈 간의 상호작용이 올바르게 동작하는지를 판단 외부 시스템(DB, 네트워크)의 통합을 테스트 슬라이스 테스트특정 레이어 (Controller, Service, Repository)에 대한 테스트애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인 테스트 코드를 작성하는 이유초기에 버그 발견 리팩토링에 유용개발 속도 향상 코드에 대한 문서 역할

[Python][백준] 1365. 꼬인 전깃줄 / LIS,이분탐색(G2)

목차🖇️ 링크 https://www.acmicpc.net/problem/1365🗒️ 파이썬 코드 풀이from bisect import bisect_leftN = int(input())lst = list(map(int,input().split()))lis = [0]for i in range(len(lst)): if lis[-1]  1. 문제를 보고  LIS (Longest Increasing Sequence) 문제임을 알아야한다.처음 풀면, 생각할 수 없을 것 같다... 그냥 문제를 몇번 풀고 익숙해져야 될듯 2. 문제의 조건은 전봇대의 개수 N(1 ≤ N ≤ 100,000) 이다.때문에 시간복잡도가 O(N^2) 이하여야 함이중 for 문이 안되기 떄문에, 이분탐색으로 접근3. 이제 조건에 맞게 l..

Garbage Collector (가비지 컬렉터)

Garbage Collector라는 단어는 정말 자주 나온다.  지역 변수는 Stack에 저장되고 동적으로 할당되는 것들은 Heap 영역에 들어간다. (동적으로 할당되는 구체적인 예시는 배열, 리스트, 트리, 객체 등이 있음)  보통 스택 같은 경우, 함수가 호출되면 해당 함수의 변수들이 스택 프레임에 저장된다. 그리고 함수 실행이 끝나면 스택 프레임이 자동으로 해제되면서 스택에서 사라진다. Heap 영역에 있는, 동적 할당 받은 것들은 다르다.C, C++과 같은 언어에서는 개발자가 free()나 delete를 호출해서 직접 메모리를 해제해야 한다. 하지만 JS, Java, Python과 같은 언어에서는 가비지 컬렉터가 자동으로 메모리를 관리해준다. 이제 이런 편리한 시스템에 대해 알아보자  !  🔧G..

🔖JS 2025.02.11

[MySQL][Leet Code] 584. Find Customer Referee (Easy)

https://leetcode.com/problems/find-customer-referee/description/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 1SELECT nameFROM CustomerWHERE referee_id != 2 OR referee_id IS NULL 1. 간단한 SQL 문제이다.  Customer 테이블에서 referee_id가 2가 아닌 값을 찾아냄  2. 주의점은 referee_id에 NULL 값이 있는데, 이거 같은 경우 값이 아니기 때문에 같은 연산자로 못 찾음  3. 때문에 IS NULL 과 같은 방법으로 찾는다.  🗒️SQL 코드 풀이 2SELECT nameFROM CustomerWHERE COALESCE(r..

[Python][백준] 2170. 선 긋기/ 정렬,스위핑 (G5)

🔗링크 :  https://www.acmicpc.net/problem/2170🗒️파이썬 코드 풀이N = int(input())lst = []for _ in range(N): a,b = map(int,input().split()) lst.append([a,b])lst.sort()merged = []# 초기값 설정start, end = lst[0][0],lst[0][1]for i in range(1,N): a,b = lst[i][0],lst[i][1] if a   1.두 점의 위치를 lst에 전부 넣어주고 sort로 정렬 해준다.여기에서 sort를 사용해도 된다. ( 정렬 시간 복잡도는 N*LogN | 10^6 * Log10^6 = 약 10^7)2. 초기값을 정렬된 lst의 첫번째 ..

[Python][백준] 1700. 멀티탭 스케줄링 / 그리디 (G1)

🔗링크 :  https://www.acmicpc.net/problem/1700🗒️파이썬 코드 풀이N,K = map(int,input().split())lst = list(map(int,input().split()))cnt = 0multitab = set()for i in range(len(lst)): # 장치가 멀티탭에 꽂힌 경우 if lst[i] in multitab: continue # 멀티탭 자리가 남는 경우 if len(multitab)  1. 세가지의 조건으로 나눈다.device가 멀티탭에 꽂힌 경우멀티탭 자리가 남는 경우멀티탭 자리 부족으로 device 교체2.  "멀티탭 자리 부족으로 device 교체"  이 부분이 중요한데, 멀티탭의 값이 lst의 i+1 ~ N ..

[Python][백준] 2252. 줄 세우기 / 위상정렬, DAG (G3)

🔗링크 :  https://www.acmicpc.net/problem/2252✨ 위상정렬 풀이 방식위상 정렬은 DAG(Directed Acyclic Graph)의 조건을 만족하면서 모든 노드를 나열하는 정렬 방법이다. 여기에서 DAG라는 말이 좀 어렵게 느껴질 수 있지만, 쉽게 말해 비순환형 그래프로 반드시 사이클이 없어야 한다. (뭐 어렵게 생각할 필요없고, 아래 예시와 같이 비순환형 그래프를 DAG라 보면 된다.) 위상정렬 같은 경우 그래프의 구조와 노드의 연결 방식에 따라 여러개의 답이 나올 수 있다.  EX) 다음은 위상 정렬에 대한 간단한 예시이다.아래의 그래프를 위상정렬로 나열하면 되는 것이다.  풀이과정은 다음과 같다.그래프 및 진입 차수 계산진입 차수 0인 노드 큐에 추가큐에서 노드 꺼내..

[Python][백준] 1916. 최소비용 구하기/ 다익스트라, 최단 경로 (G5)

🔗링크 :  https://www.acmicpc.net/problem/1062🗒️파이썬 코드 풀이from heapq import heappop,heappushN = int(input())M = int(input())lst = [[] for _ in range(N+1)]for _ in range(M): start,end,cost = map(int,input().split()) lst[start].append((end,cost))departure, arrival = map(int,input().split())distance = [float('INF')] * (N+1)distance[departure] = 0queue = [(0,departure)]while queue : current_cost,cu..