전체 글 151

GitHub LFS 결제 문제

언리얼 프로젝트를 진행하면서 LFS 기본 트래픽을 초과해 결제를 시도하게 되었다. 하면서 알게 된 사실인데 최근에 GitHub 결제 시스템이 변경되었다고 한다. 나는 이전 시스템 Pack으로 LFS를 결제했다.(10$) 근데 이전 시스템으로 LFS를 Upgrade를 해도 LFS가 트래픽을 초과해 사용이 불가능했다. 그래서 제대로 찾아본 결과 이번에 GitHub 결제 시스템이 기존의 사용 한도 및 LFS 데이터 팩 시스템 에서 예산 시스템으로 변경되었다. LFS를 사용하려면 다음과 같다.먼저 Access에서 Billing and licensing를 찾고 Budgets and alerts로 들어간다.여기서 Git LFS 쪽에 옆에 ...을 누른다.누르면 다음과 같이 나오는데 Budget amount를 입력해..

UNREAL 2025.05.15

백준 풀면서 느낀점.

알고리즘 문제를 풀기 시작한 지도 벌써 1년 반이 지났다.처음에는 이런 문제들을 왜 풀어야 하는지에 대한 의문이 많았다.주변 지인들이 알고리즘 문제를 푸는 모습을 몇 번 본 적은 있었지만 나와는 거리가 먼 이야기처럼 느껴졌다.코딩을 열심히 하는 친구들은 보통 알고리즘 공부도 병행하는 경우가 많았던 것 같다.사실 나는 어떤 것을 공부해야 할지 방향을 잡지 못한 상태였고, 그러던 중 일단 알고리즘이라도 풀어보자는 마음으로 시작하게 되었다.막상 시작해보니 말도 안 되는 문제들도 많았고 아무리 고민해도 풀리지 않는 문제들이 정말 많았다.처음에는 '틀렸습니다'라는 문구가 나올 때마다 기분이 몹시 나빴는데, 지금은 조금 익숙해졌다. (물론 여전히 썩 유쾌하진 않다.)오랜 고민 끝에 문제를 해결했을 때 느끼는 그 감..

[백준] C++ K번째 최단 경로 찾기(1854)

이 문제는 특이하게 최단경로를 구하는 문제가 아니라 K번째 최단경로를 구하는 문제이다.2번째 최단경로라는 말은 2번째로 빠른 경로를 의미한다. 최단거리를 구하는 알고리즘은 다익스트라 알고리즘으로 구현할 수 있는데 K번째 최단경로는 어떻게 구할까??우선 나는 이 문제를 다익스트라 알고리즘을 살짝 변형해서 해결하였다.다익스트라 알고리즘은 원래 선택된 노드와 이웃한 노드의 거리의 합이 저장되어 있는 값보다 작으면 값을 갱신하고 큐에 노드를 넣어줬었는데 나는 이 부분을 제거했다.그냥 갱신은 모르겠고 전부다 큐에 집어넣었다. 그러고 노드마다 방문된 횟수를 저장하고 만약 K번째로 노드가 방문되었다면 그 값을 배열에 저장하였다.어차피 우선순위 큐를 사용하기 때문에 작은게 우선으로 뽑히고 만약 노드가 K번 방문되었다면..

[백준] C++ 최단 경로 구하기(1753)

이 문제는 시작점에서 다른 정점까지의 최단 경로값을 구하는 문제이다. 다익스트라 알고리즘을 사용한다.이 문제에서 주의 깊게 보아야 하는 점은 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수 있다는 것이다.이미 최적의 값으로 갱신된 노드는 다시 방문하지 않게 만들어줘야 한다.(시간초과 방지) if (dist[cur] 이렇게 해도 되고 아니면 visited배열을 이용해서 방문된 노드를 저장해 주면 된다. 이미 방문한 노드는 다시 방문하지 않는다!#include #include #include #define INF 987654321;using namespace std;vector>v[1001];priority_queue>pq;int arr[1001];int main(void){ int N, M = 0;..

다익스트라 알고리즘

다익스트라 알고리즘은 방향 그래프에서 최단 거리를 구하는 알고리즘이다.(음수의 가중치는 허용하지 않는다.)보통 시작점에서 다른 점들 간의 거리를 구할 때 사용된다.(시작점에 대해서만 알 수 있음.)만약 노드가 1, 2, 3, 4, 5가 있고 1에서 시작을 하면 2, 3, 4 ,5까지의 최단거리를 구할 수 있다는 의미이다.(2에서 4까지의 최단거리나 2에서 5까지의 최단거리를 구할 수 없음.)만약 모든 노드에 대해 최단거리를 알고 싶다면 플로이드-워셜 알고리즘을 사용하면 된다.(단 이 알고리즘은 시작복잡도가 O(N^3)이기 때문에 입력값이 크면 사용하지 못한다. 다익스트라 알고리즘에서는 우선순위 큐라는 자료구조를 사용한다.지금까지 계산된 거리 중 가장 가까운 거리에 대해 탐색하기 위해 우선순위 큐를 사용한..

[백준] C++ 거짓말(1043)

만약 누군가 진실을 알고 있다면 거짓말을 하면 안 된다. 근데 이 문제에서 조금 헷갈렸던 점은 파티를 여는 순서가 있는지 아니면 동시에 파티를 여는지가 좀 헷갈렸다.문제를 해결해 보니 동시에 파티를 여는 문제였는데 만약 동시에 파티를 열게 되면 사람이 몸을 쪼개서 가야 하나?? 1/2등분에서 파티에 참석? 약간 이런 부분 때문에 문제를 이해하기 쉽지 않았다. 문제를 해결하는 방법은각 파티에 참여하는 사람들이 주어지는데 각 파티의 첫 번째 사람을 파티장으로 임명해서 문제를 해결한다. 위 예제로 보면첫 번째 파티에서 파티장은 1번이고 1번과 2번을 Union한다.두 번째 파티에서 파티장은 3번이고 3번과 3번을 Union한다세 번째 파티에서 파티장은 2번이고 2번과 3번을 Union하고 2번과 4번을 Uni..

위상정렬

위상정렬이란 순서가 정해져 있는 작업을 차례로 수행하여야 할 때 순서를 결정해 주는 알고리즘이다.백준의 2252번 문제를 보자두 학생의 키를 비교하는 방법으로 줄을 세우는 문제이다.그냥 A가 B보다 크다라는 것만 주어지고 키를 작은 순서대로 출력하는 문제이다.A노드->B노드 예제를 그림으로 보면이런식으로 나온다.1이 3보다 키가 작고2도 3보다 키가 작다.그러면 답은 1,2,3 또는 2,1,3이 될 수 있다. 왜냐?? 1과 2에 대한 비교를 하지 않았기 때문에 누가 더 크고 작은 지를 구분할 수 없기 때문이다.(문제에서도 답이 여러 가지인 경우 아무거나 출력한다라고 명시해 놓았다.) 그래서 위상정렬이 무엇이냐!!방향이 있는 그래프여야 하고 그래프는 사이클이 존재하지 않는 그래프에서 순서를 찾는 알고리즘이..

접근 제한 지정자

접근 제한 지정자를 크게 3가지로 보자 public은 어디서든 접근이 가능하다.private은 같은 클래스 내부에서만 접근이 가능하다.protected는 같은 클래스 또는 상속받은 클래스에서 접근이 가능하다. private이랑 protected의 차이점은 private로 선언을 하면 상속받은 클래스에서는 이 변수에 접근이 불가능하다.class Parent{ private int secret = 42; // private 멤버}class Child : Parent{ void ShowSecret() { Console.WriteLine(secret); // 접근 불가능 }} private으로 선언을 하면 상속 받아도 접근이 불가능하다.하지만 protected로 선언을 하면cl..

C# 2025.02.18

맴버변수와 맴버함수, 상수

프로그램을 실행하면 프로세스가 되어 Ram에 올라간다.Ram에서 일정한 공간을 프로세스가 차지하게 된다. class Player{ int att=300; int hp=10; int mp=5; int level=999; void Attack() { }}만약 코드가 이렇게 되어있다고 치자.그러면 Ram 어딘가에는 프로세스가 위치해 있고 프로세스 안 어딘가에는 Player가 위치해 있다.Player 안에 att가 있는데 이 att 위치에 4byte만큼의 공간이 주어지는데 이 공간에 상수 300을 집어넣어라는 의미이다. 플레이어 안에 있는 att, hp, mp, level을 맴버변수라고 부른다. 그러면 플레이어가 어떠한 행동을 하는데 이 행동을 위한 함수를 맴버함수라..

C# 2025.02.18

최소 신장 트리(MST)

최소 신장 트리란 그래프에서 모든 정점을 포함하면서 가중치의 합이 최소가 되는 트리를 말한다.최소 신장 트리를 구하기 위해서는 프림의 알고리즘을 사용하던지 크루스칼의 알고리즘을 사용하면 된다.일반적으로 프림의 알고리즘이 크루스칼의 알고리즘보다 구현하기 쉬워서 프림의 알고리즘을 많이 사용한다. *프림의 알고리즘*은 한 노드를 딱 정해서 그 노드에서부터 이웃한 노드를 우선순위 큐에 넣고 가장 가까운 노드로 나아가는 방법이다.(나아간 후에는 그 나아간 노드에 있는 이웃한 노드 또한 우선순위 큐에 넣어주는 작업을 수행해야 함. visited배열을 사용해서 이미 방문된 노드는 다시 방문하지 않음.)  *크루스칼의 알고리즘*은 간선을 우선순위 큐에 모두 넣어놓고 짧은 간선부터 하나씩 빼서 MST를 구성하는데 만약 ..