문제https://www.acmicpc.net/problem/11286고민우선순위 큐를 처음 써봤다... 우선순위 큐는 2개의 인자를 받아서 서로 비교한다. PriorityQueue queue = new PriorityQueue();위처럼 선언하고 queue.Enqueue(값, 우선순위)를 입력해주면, ICompare()를 상속받은 클래스가 호출되면서 정렬을 해준다. 즉, queue에 값과 우선순위를 Enqueue하는 순간 자동으로 정렬이 된다는 것이다. 예를들어 (2, 1), (4, -1)을 Enqueue하면 Dequeue 에서 4와 2가 순서대로 출력된다.왜냐하면 두번째 인자가 우선순위라 값이 작을수록 먼저 정렬되기 때문이다. 정렬은 우선순위 큐가 해줄거니까.. 연산말 잘 하면 되겠다고 생각했다. 그..
동식이 취업시키기 작전
문제https://www.acmicpc.net/problem/17298 풀이처음 문제를 보고 단순하게 생각했다.1. stack에 array index값을 순서대로 push()2. 만약 array index값이 array의 길이를 초과하면 pop(), -1 저장 그리고 stack에 남아있는 값을 모두 pop(), -1 저장3. (while로 오큰수 찾기그래서 위와같은 순서를 생각하고 그대로 코드를 작성했다.using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Algorithm{ internal class 오큰수 { st..
Unity를 하다보면 Slider UI를 만들게 됩니다. 핸들? 너무 크고 못생겼어. 없애도 되나?핸들 없앴더니 왜 Fill Area가 가득 안차지?Slider 커스텀 하고싶은데 어떻게 하지? 초반에 이런 고민을 정말 많이 했습니다. 그래서 제가 고민하고 결국 해결된 것들에 대해서 설명해보겠습니다. 1. Slider 커스텀Slider UI를 생성했다면, 위와 같이 Background, Fill Area, Handle Slide Area가 생성 될 것입니다. Background는 슬라이드 뒷 배경입니다. Fill Area가 줄어들면서 보이는 영역이죠.Fill Area는 채워지는 부분입니다.Handle Slide Area는 슬라이드를 조절 할 수 있는 핸들이 부착되어 있습니다. 핸들은 유니티를 실행하면 Ga..
문제https://www.acmicpc.net/problem/10844고민45656, 3234545 처럼 인접한 모든 자리의 차이가 1인 수를 계단 수라고 한다.N이 주어지면 길이가 N인 계단 수는 총 몇개가 있는지 구한 뒤 1,000,000,000으로 나눈 나머지를 출력한다.단, 0으로 시작하는 수는 세지 않는다. 처음엔 경우의 수를 다 만들어 봐야하나? 생각했지만 알고리즘 분류가 DP였다.DP는 이전에 계산했던 수를 저장해두고 필요할 때 다시 가져와서 불필요한 추가 연산을 없애는 알고리즘이다. 그렇다면 일단 경우의 수를 따져봐야한다.1. 길이가 1일 때 계단 수는?1, 2, 3, 4, 5, 6, 7, 8, 9 2. 길이가 2일 때 계단 수는?10 | 01 | 12 | 23 | ... | 78 | 89..
문제https://www.acmicpc.net/problem/1753고민올게 왔다.. 바로 다익스트라 다익스트라는 선택된 곳에서 다른 노드들 까지의 거리다.다른 길찾기 알고리즘 에서는 A에서부터 D까지 가는 방법 중 여러가지였다면다익스트라는 A에서 출발할건데 다른 노드들까지 가는 방법의 비용을 산출하는 거다. (이쯤되면 길찾기 알고리즘은 말만 조금씩 다를 뿐 푸는 방식이 같다는 느낌까지 듦) 문제는 간단하다. 주어진 시작점에서 다른 노드들간의 거리를 구하는 것1. 우선순위 큐를 사용하여 시간복잡도를 줄이기2. 거리가 가까우면 업데이트하기 위 두가지만 고민하면 된다. 나는 2번이 너무 헷갈렸다. 업데이트 하는 로직이 떠오르지 않아서 다른 사람 코드도 봤는데 이해가 힘들었다.현재 노드까지 거리에다가 다음 노..

문제https://www.acmicpc.net/problem/1922고민모든 컴퓨터를 연결하되 최소한의 선을 연결하고 싶다. => 최소 스패닝 트리 최소 스패닝 트리는 모든 정점을 연결하지만, 사이클이 없습니다. 모든 정점은 하나의 간선만 연결되어야 한다는 것입니다 후후,, 이게 무슨 말이냐면차이가 보이시나요? 위 그래프를 보면 모든 노드가 하나의 간선으로만 연결되어 있습니다. 이는 '순환하지 않는다'라고 합니다. 아래 그래프를 보면 A와 B가 2개의 간선으로 연결되어 있습니다. 이러한 모습을 보고 '순환한다'라고 합니다. 자세하게 설명하는 이유는 제가 줄글로 순환/비순환을 보았을때 무슨 말인지 몰랐거든요^!^ 그렇다면 순환하지 않으려면 어떻게 해야할까요? 바로 '방문처리'입니다.방문처리를 한다면 중복으..
문제https://www.acmicpc.net/problem/2467고민두 용액을 합쳐서 X가 나오게 하라 ⇒ 투포인터심지어 오름차순으로 제공된다? => 투포인터로 풀어라코드using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace TwoPointers{ internal class 용액 { static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); int[] solution = Array.ConvertAl..
문제https://www.acmicpc.net/problem/5568고민상근이는 카드 4 ~ 10장을 바닥에 나란히 놓음각 카드는 1 ~ 99이하 정수가 적힘 상근이는 이 카드 중 2 ~ 4장을 선택, 가로로 나란히 정수를 만듦상근이가 만들 수 있는 정수는 몇가지? ⇒ 조합 O 동일한 카드지만 순서가 다르면 다른 숫자가 됨 ⇒ 순열 X코드using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BackTracking{ internal class 카드_놓기 { static int n, k; static int[] ..