[백준 / C++] 최단경로 (골드4, 1753)
·
코딩테스트/백준 (Study)
문제방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다.입력첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다.출력첫째 줄부..
[백준 / C++] 가장 큰 증가하는 부분 수열 (실버2, 11055)
·
코딩테스트/백준 (Study)
문제수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)출력첫째 줄에 수열 A의 합이 가장 큰 증가하는 부분 수열의 합을 출력한다.예제 입력 1101 100 2 50 60 3 5 6 7 8예제 출력 1113문제 풀이이번 문제는 주어진 수열 A에서 증가하는 부분 수열 중 ..
[백준 / C++] 정수 삼각형(실버1, 1932)
·
코딩테스트/백준 (Study)
문제 7 3 8 8 1 0 2 7 4 44 5 2 6 5위 그림은 크기가 5인 정수 삼각형의 한 모습이다.맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다.삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다.입력첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.출력첫째 줄에 합이 최대가..
[UE Team Project/T.A.] 10. 무기 교체 (CombatComponent, UI)
·
프로젝트/TimelessAdventure
개요이번 포스팅에서는 여러 종류의 무기를 교체하는 방식에 대해 정리해보도록 하겠습니다.구현 아이디어 설명포스팅에서 다루지는 않았지만 무기는 총 4종류(맨손, 검, 활, 횃불)가 존재하며, 프로젝트 기획에서 무기는 장비 창을 통해 교체하는 것이 아닌 위젯을 띄워 선택된 위젯을 바탕으로 교체되도록 만들기로 하였습니다. 생각해낸 아이디어는 무기 교체 버튼을 누름과 동시에 위젯을 화면에 띄우고 마지막으로 마우스 Hover 이벤트를 받았던 무기로 교체하는 것입니다. 즉, 주먹/검/활/불 칸을 버튼으로 제작하고, Hover 이벤트 발생 시 위젯에 마지막으로 들어온 버튼이 무슨 버튼인지 체크하며 이후 해당 값에 따라 실제 무기를 교체하는 방식으로 제작하게 되었습니다.Combat Component 무기 교체 로직 구현..
[백준 / C++] RGB거리(실버1, 1149)
·
코딩테스트/백준 (Study)
문제RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.1번 집의 색은 2번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.입력첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 ..
[백준 / C++] 1로 만들기(실버3, 1463)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/1463문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 1000000보다 작거나 같은 정수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.예제 입력 12예제 출력 11예제 입력 210예제 출력 23문제 풀이이번 문제는 대표적인 DP 문제입니다. N의 범위는 1 ~ 1,000,000이며 모든 경우에서의 최솟값을 구해야 하므로 최솟값을 업데이트해가며, 최솟값..
[UE Team Project/T.A.] 9. 아이템 및 인벤토리 - 3 (UI - Inventory)
·
프로젝트/TimelessAdventure
개요이번 포스팅에서는 이전 포스팅에 이어 실제 Slot을 사용한 Inventory 위젯을 제작해보도록 하겠습니다.Inventory 디자인 이전 포스팅에서 제작한 Slot을 가로 / 세로 박스에 넣고, 소비 / 기타창을 구분하기 위한 버튼과 골드량을 추가하였으며, 슬롯의 경우 해당 칸 수에 따라 인덱스를 저장해주었습니다.Inventory Wiget (C++)기존에는 meta = (BindWidget) 키워드를 통해 각각의 위젯을 코드와 바인딩시켰으나, 이와 같이 반복되는 위젯의 양이 많은 경우 하나씩 추가해서 관리하는 것보다는 다음과 같이 TArray를 통해 묶어서 관리하는 것이 편하다고 생각하였습니다. 이제 모든 슬롯들을 런타임 도중 찾아서 해당 배열에 추가해야 했으며, WidgetTree를 통해 모든 ..
[UE Team Project/T.A.] 8. 아이템 및 인벤토리 - 2 (UI - Slot)
·
프로젝트/TimelessAdventure
개요이번 포스팅에서는 이전에 만든 인벤토리를 UI에 띄우는 방법에 대해 정리해보도록 하겠습니다.Slot 구조 및 디자인Slot은 실제로 상점, 인벤토리, 퀵슬롯에 사용되는 슬롯을 위한 클래스입니다. 이전 포스팅에서 제작한 인벤토리나 상점에서 데이터를 가져오기 위해 슬롯은 자신의 Owner를 알아야 하며, 이를 위해 Custom Widget 클래스를 간단히 제작하였습니다. Slot 클래스는 Custom Widget 클래스를 상속받았으며, 슬롯의 주인과 타입에 따라 정보를 가져와 반영해줘야 합니다. 디자인은 심플하게 배경, 아이템 아이콘, 수량으로만 다음과 같이 구성하였습니다. 우선 디자인했던 위젯을 C++에서 바인딩해주고, 추가적인 정보를 선언해주도록 합니다. 슬롯의 타입과 인덱스는 인벤토리와 같이 여러 ..