반응형

알고리즘 공부/C++ 387

[G5] 백준 18405번 경쟁적 전염 C++ 플러드 필, 우선순위 큐

리뷰 https://www.acmicpc.net/problem/18405우선순위 큐를 사용해 번호가 낮은 바이러스부터 플러드필을 통해 퍼뜨리고, S초 뒤 특정 좌표의 값을 출력하는 문제  전역 변수n : 맵의 한 변의 길이를 저장하기 위한 변수k : 주어지는 바이러스의 종류 개수를 저장하기 위한 변수lst : 맵 정보를 저장하기 위한 정수형 배열v : 방문 처리를 체크하기 위한 논리형 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 시뮬레이션에 사용하기 위한 x, y좌표와 바이러스 번호를 정의하기 위한 구조체, 바이러스 번호를 기준으로 오름차순 정렬한다.virus : 플러드 필에 사용하기 위한 Pos타입의 우선순위 큐 함수1. solutionint solution() s초간 바이러스를 퍼뜨리고..

[P5] 백준 1306번 달려라 홍준 C++ 세그먼트 트리, 슬라이딩 윈도우

리뷰 https://www.acmicpc.net/problem/1306세그먼트 트리 기본 + 슬라이딩 윈도우 기본, 플레티넘 문제 치고는 굉장히 쉬운 문제  전역 변수M : 광고판의 최대 개수를 저장할 정수형 상수 변수n : 주어지는 전광판의 개수를 저장할 변수m : 홍준이가 볼 수 있는 시야의 범위를 저장할 변수nodes : 주어지는 광고판의 빛의 세기를 저장하기 위한 정수형 배열tree : 세그먼트 트리 정보를 저장하기 위한 정수형 배열 함수1. buildvoid build(int node, int s, int e) 최대값 세그먼트 트리 초기화를 위한 함수매개변수로 현재 노드 번호와 탐색 범위 s, e를 전달 받는다.기저 조건으로 만약 리프노드에 도달하였다면 현재 세그먼트 트리의 노드에 배열의 값을 ..

[P5] 백준 27989번 가장 큰 증가하는 부분 수열 2 C++ 세그먼트 트리

리뷰https://www.acmicpc.net/problem/27989처음엔 Lis로 접근하였다가 엣지케이스가 존재하여 Fail을 받았다.그 후로 세그먼트 트리를 통해 접근하였는데 분명 로직은 맞는데 계속 틀렸다.알고보니 정수범위 초과로 인한 오버플로우로 매우 큰값을 넣었을 때의 엣지케이스를 발견했다.그 뒤로 vector을 set으로 변환하는 과정에서 뭘 잘못건드렸는지 계속 또 틀림이 반복되었다.결국 존재하는 int를 모두 long long타입으로 변환하여 set을 사용한 풀이도 AC를 받았다.  전역 변수M : 주어지는 수열의 크기의 최대값을 저장하기 위한 상수타입 변수n : 주어지는 수열의 크기를 저장할 변수lst : 수열의 정보를 입력 받아 저장하기 위한 정수형 배열tree : 최대값 세그먼트 트리..

[G5] 백준 11729번 하노이 탑 이동 순서 C++ 재귀

리뷰 https://www.acmicpc.net/problem/11729기본적인 재귀 문제인 하노이 탑의 이동 순서 문제, 경로를 체크해야 하므로 직접 재귀를 돌려야 한다.  전역 변수n : 옮겨야 할 원판의 개수를 저장할 변수path : 원판을 옮기는 순서를 저장하기 위한 pair타입의 벡터 함수1. hanoivoid hanoi(int n, int from, int to, int aux) 재귀를 통해 1번 장대에서 3번 장대로 원판을 모두 옮기기 위한 함수매개변수로 옮길 원판의 개수 n, 시작 지점 from, 도착 지점 to, 임시 장대 aux를 매개변수로 받는다.기저 조건으로 원판이 한개만 남은 경우 path에 from, to를 추가해 주고 리턴해 준다.n - 1개의 원판을 to를 임시 장대로 사용해..

[G1] 백준 6213번 Balanced Lineup C++ 세그먼트 트리

리뷰 https://www.acmicpc.net/problem/6213구간 최대값 - 최소값을 출력하는 문제, 다국어 문제라 영문으로 되어있다. 지문이 짧아 이해하긴 쉬웠다.  전역 변수N : n의 최대값을 정의하기 위한 정수형 상수 변수n : 소의 개수를 저장하기 위한 변수q : 쿼리의 개수를 저장하기 위한 변수nodes : 소의 높이를 저장하기 위한 정수형 배열Mintree : 소의 높이 기준으로 구간 최소값을 저장하기 위한 세그먼트 트리Maxtree : 소의 높이 기준으로 구간 최대값을 저장하기 위한 세그먼트 트리MM : 쿼리문 탐색 시 최소 및 최대값을 저장하기 위해 필요한 변수를 정의한 구조체 함수1. buildvoid build(int node, int s, int e) 세그먼트 트리 초기 상..

[S1] 백준 30406번 산타 춘배의 선물 나눠주기 C++ 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/30406N개의 선물을 N/2 마리의 고양이에게 2개씩 나누어 주고, 각 선물의 번호를 XOR한 값의 합의 최대치를 구하는 문제  전역 변수n : 주어지는 선물의 개수를 저장할 변수ans : 정답을 저장하기 위한 변수cnt : 주어지는 선물 번호의 개수를 저장할 정수형 배열prio : 그리디한 선물을 배분하는 순서를 담은 정수형 2차 배열 함수없음  문제풀이n값을 입력 받고 n개의 선물 정보를 입력 받는다, 입력 받은 선물 번호를 index로 cnt배열의 값을 증가시킨다.4 * 4크기의 for문을 개행해 준다, 만약 i번호를 가지는 선물이 존재하지 않으면 continue 처리해 준다.i번호의 선물의 개수와, i번째 선물의 j번째 우선순위를 갖..

[G5] 백준 17485번 진우의 달 여행 (Large) C++ 다익스트라

리뷰 https://www.acmicpc.net/problem/17485알고리즘 분류에는 다이나믹 프로그래밍 딱 하나 뿐이었는데, 다익스트라를 활용해도 AC를 받는 문제였다.n * m값이 최대 100만에 3차원 배열을 사용하다 보니 메모리와 시간을 좀 많이 사용한 문제 진우의 달 여행 (Small)문제도 있다, 해당 문제도 DP문제던데 BFS로 풀이했던 기억이 있다.DP문제를 풀러 와서 다른 알고리즘을 적용해서 푸는게 과연 맞는 것일지...백준 17484번 진우의 달 여행 (Small) C++ BFS, 너비 우선 탐색 백준 17484번 진우의 달 여행 (Small) C++ BFS, 너비 우선 탐색리뷰 10달에 걸친 복수가 완료되었다. 아무것도 모르는 코린이 시절 날 괴롭혔던 문제https://www.ac..

[Unity] 2D 카메라 추적

개요캐릭터를 씬에 배치한다 하여도 캐릭터가 카메라의 범위를 벗어나면 캐릭터의 위치를 알 수 없다.따라서 카메라가 캐릭터를 따라다니며 캐릭터의 이동을 계속하여 추적하여야 한다.이는 스크립트를 추가하거나 유니티의 Cinemachine 기능을 사용해 쉽게 해결할 수 있다. 카메라가 매 프레임마다 플레이어의 위치를 복사하도록 스크립트를 작성하는 것도 방법이지만Cinemachine을 사용해 카메라 추적을 더 쉽게 구현할 수 있으므로 해당 방법을 사용하자  Cinemachine Window -> Package Manager 클릭상단 Unity Registry에서 Cinemachine을 검색해 설치설치 후, **Hierarchy -> Create -> Cinemachine -> 2D Camera**를 추가Hierar..

[G4] 백준 1043번 거짓말 C++ 유니온-파인드

리뷰 https://www.acmicpc.net/problem/1043아ㅏㅏ 진짜 맞왜틀 맞왜틀 했는데 커스텀 정렬 함수에서 경로 압축이 제대로 되지 않은게 문제였다.결국 코드 리뷰를 통해 해당 부분에 대한 문제를 인식하고 고쳐서 AC를 받았다.근데 브루트포스로 풀어도 0ms로 AC를 받는듯 하다.오랜만에 주석을 빡세게 달았던 문제  전역 변수n : 사람의 수를 저장하기 위한 변수m : 파티의 수를 저장하기 위한 변수k : 진실을 이미 알고 있는 사람의 수를 저장하기 위한 변수ans : 진실을 아무도 모르는 파티의 개수를 저장하기 위한 변수nodes : 각 사람이 속한 그룹을 나타내기 위한 정수형 배열parties : 파티에 참가한 사람들의 정보를 저장하기 위한 정수형 벡터 배열 함수1. compareb..

[G4] 백준 2580번 스도쿠 C++ 백트래킹

리뷰 https://www.acmicpc.net/problem/2580별 생각없이 접근하고 예제가 맞는 것을 확인하고 제출했다가 곧 바로 틀려버렸다.초기 맵이 모두 0인 상태로 돌려보니 값이 이상한 것을 확인하고 좌표를 통해 접근했더니 AC를 받았다.맵의 크기가 9 * 9라서 스택 오버플로우가 나올 것 같았지만 그정도 재귀로는 터지지 않나보다.  전역 변수lst : 초기 맵 정보를 저장하기 위한 정수형 2차원 배열vc : 열을 기준으로 방문 처리를 하기 위한 정수형 2차원 배열vr : 행을 기준으로 방문 처리를 하기 위한 정수형 2차원 배열vs : 3 * 3크기의 구역을 기준으로 방문 처리를 하기 위한 정수형 2차원 배열flag : 수도쿠가 완성 되었는지를 체크하기 위한 논리형 변수 함수1. btvoid..

728x90
반응형