버전 관리파일을 공유하고 동기화하기 위해 사용하는 시스템.Git분산 버전 관리 시스템.GitHubGit을 위한 원격 저장소.Git 기본 명령어1. 저장소 초기화git init → 로컬 저장소(.git) 생성2. 파일 상태 확인git status → 현재 파일의 상태 확인3. 파일 추가 및 커밋git add [파일명] → 무대(Stage)에 올리기. 사진 찍기위해 무대로 올림.git commit -m "메시지" → 변경사항을 저장. 사진 찍음4. 커밋 확인git log → 커밋 목록 확인5. 버전 이동git checkout [커밋ID] → 특정 커밋으로 이동git switch와 git restore 명령어로 기능이 분리됨브랜치와 병합1. 브랜치 개념main → 기본(주된) 저장소branches → 독립적인..

전체 글
백트래킹해를 찾기 위해서 후보군을 나열하고, 만약 조건에 맞지 않다면 후보군에서 제외하고 돌아와 다음 후보군을 찾는 방식백트래킹은 트리 구조를 기반으로 DFS 방식을 진행하면서 각 루트에 대해 조건에 부합했는지 체크(Promising). 만약 해당 트리에서 조건에 맞지 않는 노드를 발견한다면, 더 이상 탐색을 멈추고, 다른 노드로 가기 위해 현재 가지를 버림(Pruning). 백트래킹에서 검색할 후보들을 상태 공간 트리(State Space Tree)로 표현.N-Queens문제N × N 체스판에 N개의 퀸을 서로 공격하지 못하도록 배치하는 문제8-Queens라면 8^8=16,000,000이 넘는 경우의 수를 확인해야 하는데 Pruning을 하면 약 4000~5000정도만 탐색하여 92개의 해를 얻게 됨...
import java.io.*;import java.util.*;public class Solution { static int N; static double E; static long[][] islands; static int[] parent; static List edges; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int T = Integer.parseInt(br.rea..
import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int[] students = new int[N+1]; List> graph = new ArrayList(N+1); for(int i = 0; i ()); } for(int i = 0; i pq = new PriorityQueue(); for(int i = 1; i result = new ArrayList(); while(!pq.isEmpty()) { int cur = pq..
MSTMinimum Spanning Tree (최소 신장 트리)최단 경로는 특정 두 노드 간의 거리를 최소화하는 것MST는 모든 노드를 연결하면서 총 가중치를 최소화하는 것예시:-도로 건설 도시들을 모두 연결하면서 도로의 길이가 최소가 되도록 하는 문제-전기 회로 단자들을 모두 연결하면서 전선의 길이가 가장 최소가 되도록 하는 문제-통신 전화선의 길이가 최소가 되도록 전화 케이블 망을 구성하는 문제-배관 파이프를 모두 연결하면서 파이프의 총 길이가 최소가 되도록 연결하는 문제 Kruskal대표적인 그리디 알고리즘1. 간선 정렬2. 사이클이 없는 간선 선택Parent배열에 각 정점에 자기 자신이 저장되어 있으면 현재 서로소라는 뜻(간선을 선택하지 않음)간선 선택 시 Parent 배열 업데이트간선이 많으면 ..
function solution(people, limit) { people.sort((a, b) => a - b); let left = 0; let right = people.length - 1; let boats = 0; while (left 몸무게 오름차순 정렬투 포인터 활용 (가장 가벼운 사람 + 가장 무거운 사람)left: 가장 가벼운 사람 (배열의 시작)right: 가장 무거운 사람 (배열의 끝)left + right가 limit 이하이면 두 사람을 함께 태움 → left++, right--초과하면 무거운 사람만 태움 → right--보트 개수 증가 (boats++)
function solution(k, dungeons) { let maxCount = 0; let visited = new Array(dungeons.length).fill(false); function dfs(fatigue, count) { maxCount = Math.max(maxCount, count); for (let i = 0; i = dungeons[i][0]) { visited[i] = true; dfs(fatigue - dungeons[i][1], count + 1); visited[i] = false; } } } dfs(k..
복습binary tree : 각 노드가 최대 2개의 자식노드를 가질 수 있는 트리ternary tree : 각 노드가 최대 3개의 자식노드를 가질 수 있는 트리skewed binary tree : 모든 노드가 한쪽 방향으로만 연결된 트리binary search tree : 왼쪽 자식은 부모보다 작은 값, 오른쪽 자식은 부모보다 큰 값을 가짐complete binary tree : 왼쪽부터 차례대로 노드가 채워진 트리full binary tree : 모든 노드가 0개 또는 2개의 자식을 가짐perfect binary tree : 모든 리프 노드가 같은 높이, 모든 내부 노드가 2개의 자식을 가짐. 꽉 찬 모양 그래프 : 정점과 간선으로 이루어진 자료구조트리 : 사이클이 없는 그래프 (그래프의 부분 집합)그..
function solution(priorities, location) { let queue = priorities.map((priority, idx) => [priority, idx]); let count = 0; while (queue.length > 0) { let cur = queue.shift(); if (queue.some(process => process[0] > cur[0])) { queue.push(cur); } else { count++; if (cur[1] == location) { return count; } ..
function solution(progresses, speeds) { var answer = []; let queue = []; for (let i = 0; i 0) { let cur = queue.shift(); if (cur Math.ceil((100 - progresses[i]) / speeds[i])로 각 기능의 배포 완료 날짜를 구함모든 기능의 배포 날짜를 queue에 저장스택에서 하나씩 꺼내며 이전 배포 날짜와 비교하여 배포 가능한 기능을 하나의 그룹으로 묶음이전 배포 날짜보다 작거나 같은 날짜가 나오면 해당 그룹에 배포 가능한 기능을 추가그렇지 않으면, 배포 그룹을 answer 배열에 추가하고, 새로운 그룹을 시작while문을 빠져나오고 나서 마지..