Binary Gap 문제
·
CS/알고리즘 & 자료구조
문제숫자를 이진수로 변환하여 1과 1사이의 길이 수를 출력아이디어1. 숫자를 바이너리 문자로 변환 후 순회하면서 0 카운트 갱신구현이 가장 직관적디버깅, 테스트 쉬움문자열 변환·할당 비용이 있음O(logN)2. 비트 연산 단일 루프 방식순회 N > 0N & 1 으로 LSB 조사N >>= 1 로 한 비트씩 오른쪽으로 이동문자열 변환 없이 비트만 직접 다름, O(1), 속도 측면에서 매우 효율적비트 마스크·시프트에 익숙해야함3. 정규 표현식 활용2진 문자열에서 1 ( 0+ ) 1 패턴을 모두 찾아서 그룹 길이의 최댓값코드가 한두 줄로 간결정규식 매칭 비용이 있고, 가독성이 다소 떨어질 수 있음4. 수학적 모듈로 연산N % 2 로 LSB를 구하고N /= 2 로 우측 쉬프트와 동일한 효과를 내면서0,1 카운팅 ..
벽 부수고 이동하기
·
CS/알고리즘 & 자료구조
1. 문제N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다.한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 주어진다.다음 N개의 줄에 M개의 ..
동적계획법(DP, Dynamic Programming)
·
CS/알고리즘 & 자료구조
1. 왜 만들어 졌을까?어원(When)Dynamic: 시간에 따라 변하는 걸 의미하는 것이 아님!Programming: 코드 작성이 아니라, 계획(Plan)을 짠다는 의미즉, 유동적으로 결정하는 계획 정도의 뜻누가 만들었나?Richard Bellman(리처드 벨만), 1950년대미 국방성 프로젝트 중 최적화 문제를 해결하기 위해 개발 왜? ‘Dynamic Programming’이라 이름 붙였나?벨만의 유명한 일화에 따르면:내가 일하던 국방 프로젝트는 ‘수학’이나 ‘과학’이라는 단어에 거부감을 가진 관리들이 있었지그래서 그들이 이해 못할 단어를 골라야 했어. 그래서 ‘다이내믹 프로그래밍’이라고 불렀지즉, 본래 의미보다 정치적 이유(!)로 지어진 네이밍…어떤 알고리즘이야?큰 문제를 작은 문제를 나눠서 푼 ..
자료구조 선택 (HashSet vs BitSet)
·
CS/알고리즘 & 자료구조
메모리 사용량1. 비트셋(BitSet)의 메모리 사용고정 비용: 비트셋은 내부적으로 long[] 배열로 비트를 저장합니다.예를 들어 new BitSet(1_000_000)은 약 1,000,000 비트(≈125 KB) + 배열 오버헤드(약 몇십 바이트) 정도를 사용합니다.저장 가능한 값의 최대치(=capacity)에 관계없이, capacity/8 바이트를 항상 차지합니다.장점:대량의 연속된 정수 범위에서 “존재 여부”만 저장할 때 가장 압축적입니다.단점:실제로 저장된 요소가 적더라도, 범위 전체에 대해 메모리를 할당합니다. 2. 해시셋(HashSet)의 메모리 사용가변 비용: HashSet은 내부적으로 HashMap을 쓰고, 키마다 Node 객체(엔트리)와 버킷 배열(참조 배열)을 유지합니다.버킷 배열:..
수 찾기
·
CS/알고리즘 & 자료구조
문제N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다.N 개의 정수 배열M 개의 정수 배열M 배열의 정수가 N 배열에 있는지 판단하여 1,0 출력정수 범위 -2^31 출력출력M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 해결방법1. 절차적publ..
덱(Deque) 보다 큐(Queue)와 스택(Stack)이 더 좋은 경우?
·
CS/알고리즘 & 자료구조
시리즈2025.03.11 - [Java/자료구조] - 스택? 큐?2025.03.11 - [Java/자료구조] - Deque?2025.03.11 - [Java/자료구조] - 덱(Deque) 보다 큐(Queue)와 스택(Stack)이 더 좋은 경우?자바 기반 설명이며 개념에 관한 내용을 다룹니다.📌 핵심내용
Deque?
·
CS/알고리즘 & 자료구조
시리즈2025.03.11 - [Java/자료구조] - 스택? 큐?2025.03.11 - [Java/자료구조] - Deque? 자바 기반 설명이며 개념에 관한 내용을 다룹니다.📌 핵심내용큐와 스택의 장점을 취하고 단점을 보완한 자료구조로더 유연하고 안정적인 데이터 관리가 가능합니다.다만, 성능은 상황에 따라 달라져 구조를 알고 효율적으로 사용해야 적절합니다.Deque(덱)가 등장한 배경과 필요성Deque(Double-ended Queue, 덱)는 큐와 스택의 단점을 보완한 자료구조로, 양쪽에서 삽입과 삭제가 가능한 형태입니다.1. Deque가 등장한 이유큐(Queue)와 스택(Stack)은 각각 단순한 선형 자료구조이지만, 다음과 같은 문제점이 존재합니다.큐(Queue)의 문제점FIFO 구조로 인해 한쪽..
스택? 큐?
·
CS/알고리즘 & 자료구조
시리즈2025.03.11 - [Java/자료구조] - 스택? 큐?2025.03.11 - [Java/자료구조] - Deque? 자바 기반 설명이며 개념에 관한 내용을 다룹니다.📌 핵심내용스택(Stack)과 큐(Queue)는 기본적인 자료구조로동기화(스레드 세이프), 시간 복잡도, 알고리즘 적용 방식에 따라 성능과 활용도가 크게 달라집니다. 본 글에서는 실무에서 발생하는 문제와 해결 방안을 중심으로 심화 내용을 다룹니다. 1. 스택(Stack)과 큐(Queue)의 차이점구분스택(Stack)큐(Queue)구분스택(Stack)큐(Queue)구조후입선출(LIFO)선입선출(FIFO)동기화Stack (Thread-safe X)ConcurrentLinkedDeque (Thread-safe O)LinkedList (T..
데이터 구조 선택 가이드
·
CS/알고리즘 & 자료구조
자바 기반 설명이며 개념에 관한 내용을 다룹니다.📌 핵심내용데이터 구조는 Object의 특성에 따라 적절하게 선택해야하는데스택(Stack), 큐(Queue), 해시맵(HashMap), 트리(Tree), 그래프(Graph) 등 다양한 데이터 구조가 존재하며 각각의 특성이 달라상황에 맞는 데이터 구조 선택이 성능 최적화의 핵심이다.1. 데이터 구조별 특징데이터 구조설명사용 사례배열(Array)인덱스를 통한 빠른 접근 가능리스트, 행렬 연산 (예: Java의 ArrayList)연결 리스트(Linked List)동적 크기 조정 가능, 삽입/삭제 용이LRU 캐싱 (예: Java의 LinkedList)스택(Stack)후입선출(LIFO)함수 호출 스택 (예: Java의 Stack 클래스)큐(Queue)선입선출(FI..
[리눅스] 히스토리 날짜 시간 표시
·
CS/운영체제
1. 설정 적용 글로벌 : /etc/profile 사용자 : ~/.bashrc 편집 명령어를 사용하여 열고 1. export HISTTIMEFORMAT ="%F %T : " 2. source ~/.bashrc 3. history 명령어 사용할시 확인가능