일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스택
- BFS
- 백준
- 그래프
- 자료구조
- c++
- 브루트포스
- ue5
- Team Fortress 2
- 재귀
- 투 포인터
- 트리
- 구현
- 수학
- 우선순위 큐
- 유니티
- Unreal Engine 5
- 알고리즘
- XR Interaction Toolkit
- 다익스트라
- 그리디 알고리즘
- 정렬
- 다이나믹 프로그래밍
- 유니온 파인드
- 문자열
- DFS
- VR
- 백트래킹
- 시뮬레이션
- 누적 합
- Today
- Total
목록전체 글 (616)
1일1알
if와 else if : 뒤에 오는 조건이 참이라면 실행 else if : 위의 if문의 거짓이고 뒤에 오는 조건이 참이라면 실행 else : 위의 if문이 전부 거짓일 때 실행 switch switch ( choice) : choice에는 정수나 문자열 가능 { case 0: (~~~) : choice가 0일 때 실행 break; case 1: (~~~) : choice가 1일 때 실행 break; default: (~~~) : 위에서 걸러지지 않을 떄 실행 break; } 삼항연산자 : bool a = 조건식 ? 맞을 때 : 틀릴 때 (나는 별로 선호하지 않음) 가위바위보 Random rand = new Random(); int randVal = rand.Next(0, 3); rand.Next(a, ..

단순한 그래프 탐색 문제이다. 가로 세로로 이어진 그림의 개수와 그림 중에서 넓이가 가장 큰 값을 구하면 된다. bfs와 dfs 모두 사용할 수 있다. 나는 bfs방식을 이용해서 해결하였다. #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; void Input(vector& v, int n, int m) { for (int i = 0; i > v[i][j]; } } } pair bfs(vector& v, int n, in..

출력 Console.WriteLine() : 출력하고 줄 바꿈 Console.Write() : 출력 int num = 0; Console.WriteLine("Num : {0}", num); Console.WriteLine($"Num : {num}"); 타입 1바이트 : 8비트 u : unsigned ( 음수 미포함) s : signed (음수 포함) byte(1바이트 0~255), short(2바이트), int(4바이트), long(8바이트) short, int, long 은 음수 포함 sbyte(-128~127), ushort, uint, ulong 타입의 최댓값에서 1을 증가시키면 최솟값으로 바뀜 ( 오버플로우 ) 타입의 최솟값에서 1을 감소시키면 최댓값으로 바뀜 ( 언더플로우 ) ex) byte n..

직사각형의 경로에서 동그라미가 주어지면 그 곳을 거쳐서 오른쪽 밑 끝까지 가고, 주어지지 않으면 그냥 오른쪽 밑 끝까지 가는 경우의 수를 구하는 문제이다. 동그라미의 좌표가 주어지지 않으면 (0, 0)에서 (n-1, m-1) 까지의 경우의 수를 구하고 동그라미의 좌표가 (x, y)라고 주어지면 (0, 0)에서 (x, y) 경우의 수와 (x, y,)에서 (n-1, m-1)까지의 경우의 수를 곱하면 된다. 동그라미는 좌표가 아닌 숫자로 주어지기 때문에 좌표로 변환해야 한다. 숫자가 k로 주어지면 ( (k - 1) / m , (k - 1) % m ) 의 식을 통해 좌표를 구할 수 있다. bfs방식을 통해서 경우의 수를 구하였다. #include #include #include #include #include ..

다이나믹 프로그래밍으로 해결할 수 있는 문제이다. 3가지 경우가 있는데, 사자를 배치하지 않는 경우, 왼쪽에 배치하는 경우, 오른쪽에 배치하는 경우가 있다. dp[n][3] 의 dp테이블을 만들어서 0열에는 배치하지 않을 때의 경우의 수, 1열에는 왼쪽에 배치할 때의 경우의 수, 2열에는 오른쪽에 배치할 때의 경우의 수를 넣어서 문제를 해결할 수 있다. 우선 우리의 크기가 1일 때에는 dp[1][0] = 1, dp[1][1] = 1, dp[1][2] =1 로 모두 하나의 경우의 수를 가진다. 다음 우리의 크기가 2일 때에는 사자를 배치하지 않는 경우는 위의 세 가지 경우 모두 가능하기 때문에 dp[2][0]=dp[1][0]+dp[1][1]+dp[1][2] 이다. 사자를 왼쪽에 배치하는 경우는 1행에서 사..

다이나믹 프로그래밍으로 해결할 수 있는 문제이다. 우리가 원하는 답은 1, 5, 12원의 동전으로 15원을 만들 때 가장 적게 드는 개수를 찾는것이다. 최종 답에서 top - down 방식으로 우선 생각해볼 때 두 가지 경우로 나눌 수 있다. 첫번째는 맨 뒤에 있는 12원의 동전을 포함한 경우이다. 이 경우는 같은 동전을 여러번 사용할 수 있으므로 1, 5, 12원으로 3원을 만드는 작은 문제로 나눌 수 있다. 이때는 12원의 동전을 하나 선택했기 때문에 +1을 해줘야한다. 두 번째는 12원의 동전을 포함하지 않은 경우이다. 이 경우는 1, 5원으로 15원을 만드는 작은 문제로 나눌 수 있다. 이 중 작은 값이 답이 되고, 나눠진 문제에서 같은 방식으로 또 나누면서 문제를 해결할 수 있다. 이 방식으로 ..