전체 글

문제 19598번: 최소 회의실 개수 2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의 www.acmicpc.net 풀이 그리디, 우선순위 큐 [백준][C++] 11000: 강의실 배정 문제 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 풀이 그리디, 우선순위 큐 [백준][C++] 2170: 선 긋기 문제 풀 kantatatam.tistory.com 위의 문제와 풀이가 같은 문제 코드 #include #include ..
문제 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 그래프 탐색, 너비 우선 탐색 간단한 너비 우선 탐색 문제로, 8방향만 주의하면 된다. 지도의 (0, 0)부터 탐색을 시도하며, 현재 타일이 방문하지 않은 섬이라면 해당 타일부터 너비 우선 탐색을 실시한다. 상하좌우 대각 8방향에서 방문하지 않은 섬이 있다면 방문하고 이를 반복한다. 탐색이 종료되면 시작한 타일이 포함된 섬을 하나 방문한 것으로 섬의 개수가 1 증가한다. 코드 #include #include using namespace std; ..
AGameModeBase는 아래의 설정을 담당한다. Defautl class들을 설정 Player의 Pawn을 spawn restart player restart the game AGameMode는 AGameModeBase의 파생 클래스로 다음의 설정을 담당한다. Match State Handling Match States Custom Match Sates MatchStates 게임 모드에는 MatchState namespace가 있다. /** Possible state of the current match, where a match is all the gameplay that happens on a single map */ namespace MatchState { extern ENGINE_API con..
문제 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 풀이 그리디, 우선순위 큐 가장 작은 수를 만들기 위해서는 뽑는 카드가 현재 상태에서 가장 작은 2장의 카드를 뽑아야 한다(그리디). 현재 상태에서 가장 작은 카드를 뽑기 위해 우선순위 큐를 사용한다. 우선순위 큐의 탑에 있는 카드를 2장 뽑는다. 2장의 카드를 더한 값을 우선순위 큐에 2번 더한다. 이를 m번 반복한다. 여기서 카드의 수가 크기때문에 자료형은 long long을 사용해야 한다. 코드 #include #i..
문제 10219번: Meats On The Grill 각 테스트 케이스마다 각 고기덩이를 뒤집은 후의 불판의 상태를 H줄에 걸쳐서 출력한다. 각 줄에는 W개의 문자가 있어야 하며, 입력에서 주어진 각 고기 덩이가 뒤집힌 채로 있어야 한다. 이를 www.acmicpc.net 풀이 애드 혹, 해 구성하기 처음에는 BFS에 구현을 더한 문제로 접근했지만, 간단한 문제였다. 주어진 불판 자체를 뒤집으면 고기가 겹치지도 않고, 전체가 뒤집힌다. 코드 #include using namespace std; char m[11][11]; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int T; cin >> T; while (T--) ..
문제 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 풀이 우선 순위 큐 모든 수를 vector에 넣으면 메모리 초과가 발생한다. 수를 입력받으면서 바로 처리해줘야 한다. 오름차순 우선순위 큐를 만든다. 우선순위 큐는 입력받으면 바로 정렬되므로 top에는 큐에서 가장 낮은 값이 위치하게 된다. 즉, 우선순위 큐의 size를 N으로 제한한 상태에서 i번째 수까지 입력받으면, top에는 i번째 수 중에서 N번째로 큰 수가 위치하게 된다. 코드 #include #include using namespace std; prio..
문제 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 풀이 구현, 브루트포스 알고리즘 1부터 10000까지의 수, n이 셀프 넘버인지 검사한다. 1부터 n 사이의 수 i에 대해서 (n - i)가 n의 생성자인지 검사한다. (n - i)의 각 자리수의 합을 구한다. (n - i) + ((n - i)의 각 자기수의 합) == n 이라면 (n - i)는 n의 생성자이므로 셀프 넘버가 아니다. 위의 방법으로 셀프 넘버를 찾는다. 코드 #include using nam..
게임에서 같은 서버에 있다고 해서, 서로 같은 시간를 가지는 것은 아니다. 서버 머신에서 게임을 만들고, 클라이언트에서 서버에 접속한다면 서버 머신의 시간이 A, 클라이언트 머신의 시간이 B라면 A > B가 될 것이다. 라운드로 진행되는 게임의 경우, 서버와 동기화를 맞추지 않는다면 각 머신에서 남은 시간은 서로 다를 것이다. 그러므로 서버를 기준으로 클라이언트의 시간 동기화가 필요하다. 이는 RPC로 구현할 수 있다. // Requests the current server time, passing in the client's time when the request was sent UFUNCTION(Server, Reliable) void ServerRequestServerTime(float TimeOf..
문제 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 풀이 그리디, 정렬 구멍이 정렬되어 들어오지 않으므로 정렬이 필수이다. // 정렬 필수 sort(hole.begin(), hole.end()); 구멍 start에서 테이프를 붙였을 때, 막을 수 있는 구멍의 거리는 start + L - 1까지이다. 이 거리보다 먼 구멍은 막을 수 없으므로, 새로운 테이프를 사용해야 한다. start + L - 1에서 다음 구멍 까지는 테이프를 붙이지 않아도 되므로, 다음 구멍이 start가 되어 다시 sta..