[백준 / C++] 경로 찾기 (실버1, 11403)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/11403문제가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다.출력총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 길이가 양수인 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다.예제 입력 130 ..
[백준 / C++] 절대값 힙 (실버1, 11286)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/11286문제절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다.배열에 정수 x (x ≠ 0)를 넣는다.배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다.프로그램은 처음에 비어있는 배열에서 시작하게 된다.입력첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 -231보다 ..
[UE Team Project/Issac 3D] 3. 랜덤 맵 생성 - 2 (완)
·
프로젝트/Isaac 3D
개요이전 포스팅에서는 랜덤한 맵의 구조를 제작하는 방법에 대해 정리했습니다. 이번에는 정리된 구조를 토대로 스폰할 방의 컨셉과 구현 방법에 대해 정리해보도록 하겠습니다.Room 구현 아이디어기본적으로 하나의 Room 클래스를 만들어 블루프린트 클래스를 생성하여 방을 구현할 예정입니다. 이렇게 하면 전체 게임의 흐름을 관리하고, 몬스터 스폰 정보와 같은 중복되는 작업을 효율적으로 처리할 수 있습니다.RoomBase 구현방은 시작과 동시에 모든 문이 열려야 하며, 플레이 상황에 따라 몬스터를 스폰하고 방 문을 다시 여는 등의 로직을 수행해야 합니다. 이러한 상태를 명확하게 구분하기 위해 방 별로 Enum class를 새로 제작하여 상태에 맞는 행동을 수행하게 제작하였습니다. 또한 방 별로 스폰 가능한 몬스터..
[UE Team Project/Issac 3D] 2. 랜덤 맵 생성 - 1
·
프로젝트/Isaac 3D
개요이번 포스팅에서는 랜덤한 맵을 생성하는 방법에 대해 제가 구현했던 방법을 토대로 정리해보려고 합니다.랜덤 맵 생성 아이디어처음 팀원들과 협의한 결과, 아이작의 맵 구성 방식 대신 던전 앤 파이터와 같은 스타일의 레벨을 제작하기로 결정했습니다. 이 방식이 기한 내에 더 나은 퀄리티를 달성할 수 있다고 판단했기 때문입니다. 방의 크기가 다르면 카메라의 촬영 반경이 달라지기 때문에, 이번 프로젝트에서는 방과 방이 맞닿은 형태의 맵을 구성하기로 했습니다. 아이작 스타일의 미니맵과는 다른 던전앤파이터 스타일의 미니맵을 목표로 삼았습니다. 목표를 설정한 후, 다른 사람들이 어떤 방식으로 랜덤 맵을 제작하는지 조사해본 결과 이미 다양한 알고리즘들이 존재한다는 것을 알게 되었습니다. 다음 링크에서 확인해보면 미로를..
[UE Team Project/Issac 3D] 1. 프로젝트 역할 분담
·
프로젝트/Isaac 3D
개요안녕하세요, 이번 포스팅에서는 청년취업사관학교(SeSAC)에서 수강한 언리얼 엔진 과정을 통해 처음으로 진행한 C++ 팀 프로젝트에 대해 이야기해보려 합니다.프로젝트 개요이번 프로젝트는 '아이작'이라는 2D 게임을 3D로 변환하는 작업을 목표로 했습니다. 이 과정에서 저는 팀원들이 블루프린트로 작성한 기존 작업을 C++로 변환하는 역할을 맡았으며, 프로젝트의 일부 기능을 새롭게 구현해야 했습니다. 동시에 원본 게임과 비교하면서 기존 결과물에서 수정해야 할 부분들을 찾아내는 작업도 진행했습니다.역할 분담이번 프로젝트에서 저는 다음과 같은 내용들을 구현하게 되었습니다. 랜덤 맵 생성기존 작업물의 결과물이 고정된 맵에서 진행되다 보니 원작과 플레이 느낌이 많이 달라 구현하게 되었습니다.원작과 달리 3D이므..
[백준 / C++] 카잉 달력 (실버1, 6064)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/6064문제최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 것을 이라고 하자. 만일 x 은 그들 달력의 마지막 해로서, 이 해에 세상의 종말이 도래한다는 예언이 전해 온다.예를 들어, M = 10 이고 N = 12라고 하자. 첫 번째 해는 로 표현되고, 11번째 해는 로 표현된다. 은 13번째..
[백준 / C++] 과일 탕후루 (실버2, 30804)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/30804문제입력첫 줄에 과일의 개수 N이 주어집니다. (1≤N≤200000)둘째 줄에 탕후루에 꽂힌 과일을 의미하는 N개의 정수 S1,, SN이 공백으로 구분되어 주어집니다. (1≤Si≤9)출력문제의 방법대로 만들 수 있는 과일을 두 종류 이하로 사용한 탕후루 중에서, 과일의 개수가 가장 많은 탕후루의 과일 개수를 첫째 줄에 출력하세요.예제 입력 1 55 1 1 2 1예제 출력 1 4과일을 앞에서 1개, 뒤에서 0개의 과일을 빼면 남은 과일은 1, 1, 2, 1번 과일이 꽂혀있는 탕후루가 됩니다. 과일의 개수는 4개입니다.예제 입력 2 31 1 1예제 출력 2 3탕후루가 이미 두 종류 이하의 과일로만 이루어져 있습니다.예제 입력 3 91 2 3 ..
[백준 / C++] 탑 (골드5, 2493)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/2493문제KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다.예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방..