전체 글 228

[Unity - Learn] 플레이어 컨트롤

실행 취소 : Ctrl + Z 계층 구조에 선택한 오브젝트로 초점 이동 : F 선택한 오브젝트 360' 회전해서 보기 : Alt + 왼쪽 마우스 클릭하면서 움직이기 플레이 모드 : Ctrl + P 순서대로 QWERTY rigid body : 물리 구현 (중력, 질량 구현 가능) Obstacle 복사 : Ctrl + D Obstacle 동시 선택 : Shift 누르고 클릭 Time.deltaTime : 시간당 움직임 메인 카메라가 차 따라가게하기 차 움직임 구현 Vector3 게임 뷰

Unity/Learn 2023.02.20

[BFS] BOJ 2665 미로만들기

https://www.acmicpc.net/problem/2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net 문제 해결 알고리즘 BFS에서 0인 부분에 갈 때는 cnt를 1 더해주고, 만약 원래 있던 값보다 작으면 갱신해준다. 소스 코드 #include #define MAX_SIZE 101 using namespace std; int n; int arr[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE]; int dir[4][2] = {{-1, 0}, {1, 0}, {0..

[다익스트라] BOJ 1719 택배

https://www.acmicpc.net/problem/1719 1719번: 택배 첫째 줄에 두 수 n과 m이 빈 칸을 사이에 두고 순서대로 주어진다. n은 집하장의 개수로 200이하의 자연수, m은 집하장간 경로의 개수로 10000이하의 자연수이다. 이어서 한 줄에 하나씩 집하장간 경 www.acmicpc.net 문제 해결 알고리즘 모든 노드에서 다익스트라 알고리즘을 쓴다. 거리를 갱신 해줄 때, 전 노드를 배열에 저장해준다. 소스 코드 #include #define MAX_SIZE 201 #define INF 1e9 using namespace std; vector graph[MAX_SIZE]; int d[MAX_SIZE]; int result[MAX_SIZE][MAX_SIZE]; void dijk..

[DP] BOJ 11054 가장 긴 바이토닉 부분 수열 (C++)

https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 문제 해결 알고리즘 배열 양쪽에서 LIS알고리즘을 각각 수행해주고 두 dp 값의 합의 최댓값을 구해주면 된다. DP로도 풀리게 나온 문제 소스 코드 #include using namespace std; int arr[1001], dp[1001][2]; int main(){ int N; cin >> N; for(int i=0;i> arr[i]; dp[0][0] = 1; for(int i=1;i=0;i--){ dp[i]..

[DP] BOJ 13398 연속합 2 (C++)

https://www.acmicpc.net/problem/13398 13398번: 연속합 2 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 해결 알고리즘 한 칸 넘은 경우와 넘지 않은 경우 두 가지 배열을 다이나믹 프로그래밍을 한다. 소스 코드 #include using namespace std; const int MAX = 100001; int arr[MAX], dp[MAX][2]; int main(){ int n; cin >> n; for(int i=1;i> arr[i]; dp[i][0] = dp[i][1] = -1001; } ..

[그리디] BOJ 12931 두 배 더하기 (C++)

https://www.acmicpc.net/problem/12931 12931번: 두 배 더하기 모든 값이 0으로 채워져 있는 길이가 N인 배열 A가 있다. 영선이는 다음과 같은 두 연산을 수행할 수 있다. 배열에 있는 값 하나를 1 증가시킨다. 배열에 있는 모든 값을 두 배 시킨다. 배열 B가 주 www.acmicpc.net 문제 해결 알고리즘 그리디 알고리즘 문제 수 중에 홀수가 존재하면 홀수들을 전부 -1 해준다. 수 중에 홀수가 존재하지 않다면 모든 수를 2로 나눠준다. 소스 코드 #include using namespace std; int N, result = 0; int arr[51]; bool is_zero(){ bool flag = true; for(int i=0;i> N; for(int ..

[0-1 BFS] BOJ 1261 알고스팟 (C++)

https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 문제 해결 알고리즘 0-1 BFS 문제 정점이 0이면 덱 앞에 1이면 덱 뒤에 놓는 BFS 문제이다. 소스 코드 #include using namespace std; int M, N; int arr[101][101], cnt[101][101]; int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; bool isIn(int x, int y..

[0-1 BFS] BOJ 13549 숨바꼭질 3 (C++)

https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 해결 알고리즘 0-1 BFS 문제이다. 2배로 가는 경우도 있으므로 최대가 100000이지만 200000으로 넉넉히 잡아주어야한다. 소스 코드 #include using namespace std; const int MAX = 200000; int N, K; int cnt[MAX+1]; bool isIn(int x){ return 0> K; fill(cnt, ..

[우선순위 큐] BOJ 7662 이중 우선순위 큐 (C++)

https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 문제 해결 알고리즘 최대 힙과 최소 힙으로 각각 최댓값 최솟값을 알아내고, map을 이용해서 남아있는 원소들의 갯수를 저장해준다. 없으면 힙에서 삭제를 해주어야한다. 오버플로우가 나므로 long long 자료형을 써주어야한다. 소스 코드 #include #define ll long long using namespace std; int main(){ ios_base::sync_with_stdio..

[백트래킹] BOJ 1062 가르침 (C++)

https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 문제 해결 알고리즘 a ~ z 까지 K개를 백트래킹으로 무작위로 골라 배열에 표시한다. 이 때, anta tica가 항상 문자열 앞 뒤에 들어있으므로 a, n, t, i, c는 처음부터 저장해준다. 그러고 문자열의 4번째부터 끝에서 4번째까지 배열에 있는 문자열인지 아닌지 검사하고, 모두 있다면 표시해준다. 여기서 pos 파라미터를 적절히 써줘야 시간초과를 피할 수 있다. 소스 코드 #in..