본문 바로가기

전체 글252

[백준 2751번][C++] 수 정렬하기 2 #include #include #include #include #include #include #include #include #include #include #include using namespace std; void Merge(int* v,int* temp, int left, int mid, int right) { int l_index = left; int r_index = mid + 1; int insert_index = left; //vector temp(v.size()); //int* temp = new int[1000000]; while (l_index > arr[i]; MergeSort(arr, temp, 0, N - 1); //for (int i = 0; i < v.size(); i++.. 2023. 7. 25.
[개발더미][Unity] 모노 싱글톤 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Singleton : MonoBehaviour where T : MonoBehaviour { private static object lockObject = new object(); // 쓰레드 안전화에 사용 private static bool isQuit = false; // 프로그램이 종료되거나 이상이 있는 경우 판단 private static T instance = null; // 객체 public static T Instance { // 쓰레드 안전화(Thread-Safe) get { // lock블럭 : 한번에 한 쓰레드만 실행되도록 .. 2023. 7. 25.
[개발더미][Unity] FSM #region FSM // FSM을 사용한 이유 // 1. 직관적 -> 상태를 알아보기 쉬움 // 2. 명확성 -> 상태별 수행 동작이 명확하게 분리됨 // 3. 예방 -> 상태가 겹치는 오류 발생 사전 차단 protected enum State { Idle, Move, Attack, Dead } [SerializeField] protected State myState; protected override void ChangeState(State changeState) { // 캐릭터의 상태를 바꾸는 함수 if (changeState == myState) return; // 같은 상태로 변경하는 경우 myAnim.SetBool(myState.ToString(), false); myState = change.. 2023. 7. 24.
[개발더미][Unity] 추상 클래스 using System.Collections; using System.Collections.Generic; using UnityEngine; // 추상 클래스를 사용한 이유 // 1. 설계도 역할 -> 몬스터와 플레이어의 공통 특성을 파악(추상화) // 2. 캡슐화 -> 변수를 드러나지 않게 함(데이터 보호) // 3. 상속 -> 중복 코드 최소화 // 4. 다형성 -> 오버라이드 사용 public abstract class CommonProperties : MonoBehaviour { protected enum State { Idle, Move, Attack, Dead } [SerializeField] protected State myState; protected abstract void ChangeS.. 2023. 7. 24.
[백준 25305번][C++] 커트라인 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, k; cin >> N >> k; vector v(N); for (int i = 0; i > v[i]; } for (int i = 0; i < v.size() - 1; i++) { int maxVal = v[i]; int maxIndex = i; fo.. 2023. 7. 24.
[면접 준비][Graphics] 렌더링 파이프라인(Rendering Pipeline) 1. 렌더링 파이프라인 - 렌더링 파이프라인(Rendering Pipeline) 또는 그래픽스 렌더링 파이프라인(Graphics rendering pipeline)이라고 부름 - 3차원으로 만들어진 모델을 2차원에 투영하는 렌더링 과정의 프로세스를 자세하게 표현한 것 - 컴퓨터에 데이터로 존재하는 3D 리소스가 모니터에 출력되는 과정이 렌더링 파이프라인을 따름 2. 렌더링 파이프라인의 과정 - 첨부된 사진과 같은 과정에 따라 화면에 도형을 표시한다. - 초록색은 필수적인 과정이고, 주황색은 사용자가 조작이 가능한 과정이다. 1) Input Assembler(입력 조립) - 렌더링 파이프라인의 첫 단계, Vertex Specification 이라고도 불림 - 이 단계는 CPU에서 렌더링을 수행할 도형의 정.. 2023. 7. 23.
[백준 2587번][C++] 대표값 2 #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector v(5); int sum = 0; // 합계 int avg = 0; // 평균 // 원소 입력 for (int i = 0; i > v[i]; sum += v[i]; } avg = sum / v.size(); cout 2023. 7. 23.
[백준 2750번][C++] 수 정렬하기 - 9. 카운팅 정렬 #include #include #include #include #include #include #include #include #include #include #include using namespace std; void PositiveCountingSort(vector& v, int maxVal) { vector count(maxVal + 1); // 각 데이터 별 개수를 저장할 벡터 for (int i = 0; i < v.size(); i++) { count[v[i]]++; // 각 데이터 별로 갯수를 셈 } // 0부터 오름차순으로 정렬할 것이므로 0번은 구했던 값 그대로이기 때문에 1부터 시작 for (int j = 1; j < count.size(); j++) { // 자신의 값에 이전의 원소.. 2023. 7. 23.
[면접 준비][자료구조] 스택과 큐의 차이점 1. 스택(Stack) - 나중에 들어간 것이 먼저 나오는 후입선출의 구조이다.(LIFO) - 비어있는 스택에서 원소를 추출하면 stack underflow - 스택이 넘치는 경우 stack overflow - ex) 뒤로가기, 실행취소, 역순 문자열 만들기 등 2. 큐(Queue) - 먼저 들어간 것이 먼저 나오는 선입선출의 구조(FIFO) - 한쪽 끝에서는 삽입 작업이, 다른 쪽 끝에서는 삭제 작업이 양쪽으로 이루어짐 - ex) 줄을 서서 기다려야하는 모든 행동들, 프로세스 관리, 너비우선탐색(BFS) 등 스택은 나중에 들어간 것이 먼저 나오는 후입선출, LIFO의 구조이고, 큐는 먼저 들어간 것이 먼저 나오는 선입선출, FIFO의 구조입니다. 스택의 예시로는 실행취소 등이 있고, 큐의 예시로는 줄을.. 2023. 7. 22.
[백준 10816번] 숫자 카드 2 - unordered_map #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; unordered_map SG; // 상근이의 카드더미 for (int i = 0; i > card; SG[card]++; // 카드 별로 갯수를 셈 } int M; cin >> M; .. 2023. 7. 22.
[면접 준비][자료구조] 벡터, 리스트, 맵, 딕셔너리 1. 배열 - 스택에 생성되는 인덱스 기반의 기본 자료구조 - 길이가 고정되어 있음 - 메모리의 효율성이 높음 - 원소에 직접 접근하는 것이 쉬움 - 원소를 중간에 추가하거나 삭제하는 것은 어려움 2. 벡터 - 힙에 생성되어 메모리에 동적으로 할당되는 iterator 기반 컨테이너 - 배열과 같이 연속적인 메모리 값에 할당되고 특정 원소에 접근하기 쉬움 - 속도 면에서는 배열에 비해 성능이 떨어지지만 자료를 효율적으로 관리할 수 있고, 예외처리가 쉬움 - 배열과 마찬가지로 원소를 중간에 추가하거나 삭제하는 것은 어려움 3. 리스트 - 비연속적인 메모리 값을 가짐 - 포인터로 연결되어 연결리스트라고 불림 - 각 원소의 추가 및 제거가 빠르고 쉬움 - 원소에 직접 접근하는 것은 불가능하고 처음이나 끝부터 차.. 2023. 7. 21.
[백준 1620번][C++] 나는야 포켓몬 마스터 이다솜 #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; map book1; // 도감1 -> 번호로 이름찾기 map book2; // 도감2 -> 이름으로 번호찾기 for (int num = 1; num > name; book1.insert({ num,name }); book2.insert({ name,num }); .. 2023. 7. 21.