목록2023/09 (43)
넘치게 채우기
C++코드 struct Segment { int x1, y1, x2, y2; }; // 두 선분이 겹치는지 확인하는 함수 bool doSegmentsOverlap(const Segment& a, const Segment& b) { return (max(a.x1, a.x2) >= min(b.x1, b.x2) && max(a.y1, a.y2) >= min(b.y1, b.y2) && min(a.x1, a.x2)
벨만-포드 알고리즘이란? 한 노드에서 다른 노드까지의 최단 거리를 구하는 알고리즘이다. 다익스트라 알고리즘과의 비교 다익스트라 알고리즘은 양수일 때에만 사용이 가능하지만, 벨만포드 알고리즘은 음수에서도 사용이 가능하다. 시간 복잡도는 다익스트라 알고리즘이 더 효율적이다. 벨만포드 알고리즘 1. 시작 노드를 설정한다. 2. 시작 노드를 제외한 모든 노드의 거리를 INF로 구성한다. 3. 현재 노드의 모든 인접 노드를 탐색하며 기존의 연결 관계보다 현재 노드를 거치고 가는 것이 더 짧을 경우 갱신한다. 4. 모든 노드에 대해 반복한다. 5. 모든 노드에 대해 반복하고 나서도 갱신된다면, 그건 음수 사이클이 존재한다는 의미이다. 벨만포드 알고리즘 예시 1.노드 A에서부터 시작한다. 2 < INF, 4 < IN..
순서가 정해져 있는 일련의 알고리즘을 수행해야 할 때 사용되는 알고리즘이다. '사이클이 없는 방향 그래프의 모든 노드를 순서대로 나열하는 것' 이다. 대표적으로 선수학습 과목 등의 예시가 있다. 진입차수와 진출차수 진입차수(indegree): 특정 노드로 들어오는 간선의 개수(노드로 오기 전의 조건) 진출차수(outdegree): 특정 노드에서 나가는 간선의 개수 위상 정렬 알고리즘 1. 진입차수가 0인 노드를 큐에 넣는다. 2. 큐가 빌 때까지 다음의 과정 반복: 큐에서 원소를 꺼내서 그 노드가 향하는 노드의 진입차수를 1 낮추기(그 간선 방문처리) 진입차수가 0이 된 노드를 큐에 넣기 위상 정렬 알고리즘의 예시 1. 진입차수가 0인 노드부터 큐에 넣고 시작한다. 큐에서 요소를 하나 꺼낸다. 꺼내진 요..
컴퓨터는 이진수를 사용한다. 비트 연산을 통해서 우리는 더 빠른 연산을 할 수 있다. 비트마스킹의 장점 1. 빠른 연산 - 비트마스킹 연산은 상수 시간에 연산된다. 2. 간결한 코드 - 비트마스킹을 통해 간결한 코드 표현이 가능하다. 3. 적은 메모리 사용 - 큰 크기의 숫자를 적은 메모리로 표현이 가능하다. 비트 연산들 and(&) 둘 다 참일 때에만 1 반환 ex) 1010 & 1111 = 1010 or(|) 둘 중 하나만 참일 때 1 반환 ex) 1000 | 1101 = 1101 xor(^) 둘이 서로 다를 때 1반환 ex) 1010 ^ 1111 = 0101 not(~) 반대 값을 반환 ex) ~1010 = 0101 시프트 연산() 비트 자릿수를 옮김. 001101
https://leetcode.com/problems/combination-sum-iv/description/ Combination Sum IV - LeetCode Can you solve this real interview question? Combination Sum IV - Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target. The test cases are generated so that the answer can fi leetcode.com 문제 유형 : 조합 / 다이나믹 프로그래밍 문제 난이도 : Medi..
https://stackoverflow.com/questions/62869571/call-to-implicitly-deleted-default-constructor-of-unordered-set-vectorint ." This d..." data-og-host="stackoverflow.com" data-og-source-url="https://stackoverflow.com/questions/62869571/call-to-implicitly-deleted-default-constructor-of-unordered-set-vectorint" data-og-url="https://stackoverflow.com/questions/62869571/call-to-implicitly-deleted-default..
[](const pair& a, const pair& b) { if(a.first == b.first) { return a.second b.first; } pair를 담은 vector에서, 같은 값을 가졌을 때, 두번째의 값이 더 작은 값으로 정렬할 때 쓰이는 방법이다. [](자료형) {ToDO}
https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 : 재귀 문제 난이도 : Level 2 문제 설명 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다..
https://leetcode.com/problems/linked-list-cycle/description/ Linked List Cycle - LeetCode Can you solve this real interview question? Linked List Cycle - Given head, the head of a linked list, determine if the linked list has a cycle in it. There is a cycle in a linked list if there is some node in the list that can be reached again by continuo leetcode.com 문제 유형 : 연결 리스트, 투 포인터 문제 난이도 : Easy 문제..
https://leetcode.com/problems/unique-paths/description/ Unique Paths - LeetCode Can you solve this real interview question? Unique Paths - There is a robot on an m x n grid. The robot is initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot leetcode.com 문제 유형 : 다이나믹 프로그래밍 문제 난이도 : Medium 문제 There is a..