분류 전체보기 96

큐(Queue)

큐잉 이론(Queueing Theory) - 서버의 수 : 2대 - 각 서버의 수행 시간 : 1분 - 객체의 유입량 : 30명 / 1시간 * 평균 고객 수, 기다리는 고객 수 예상 1. 추상 큐(Abstract Queue) 1) 구성 및 삽입과 삭제 방법 ▪ 선형 정렬을 이용 ▪ 삽입과 삭제가 개별적으로 실행 ▪ 삽입(Push Into)에 어떤 객체든 제한이 없으며, 그 객체는 큐의 Back ▪ 큐의 처음 객체는 Front ▪ 삭제(Pop From)는 큐의 현재 Front에서 실행 2) 선입 선출(Firtst-In-First-Out, FIFO) 자료구조 3) 4가지 연산 * 2가지 예외 상황 ▪ 빈 큐에서 삭제(Pop) 연산 혹은 첫 객체(Front) 참조 시 정의되지 않음 2. 응용 분야 1) 손님-제..

스택의 응용

스택의 괄호 검사 1. 개요 - 스택의 괄호 검사 ▪ 수식에 포함되어 있는 괄호는 가장 마지막에 열린 괄호를 가장 먼저 닫아 주어야 하는 후입선출 구조로 구성되어 있음 ▪ 후입선출 구조의 스택을 이용하여 괄호를 검사함 ▪ 수식을 왼쪽에서 오른쪽으로 하나씩 읽으면서 괄호 검사 ① 왼쪽 괄호를 만나면 스택에 Push ② 오른쪽 괄호를 만나면 스택을 Pop하여 마지막에 저장한 괄호와 같은 종류인지를 확인 - 같은 종류의 괄호가 아닌 경우 괄호의 짝이 잘못 사용된 수식임 ▪ 수식에 대한 검사가 모두 끝났을 때 스택은 공백 스택이 됨 - 수식이 끝났어도 스택이 공백이 되지 않으면 괄호의 개수가 틀린 수식임 2. 알고리즘 - 괄호의 쌍 검사 알고리즘 testPair( ) exp ← Expression; Stack ..

스택의 구현

기본 연산 Push와 Pop 1. Push와 Pop 연산 - 스택에서의 원소 삽입/삭제 과정 * 공백 스택에 원소 A, B, C를 순서대로 삽입하고 한번 삭제하는 연산과정 동안의 스택 변화 2. Push 알고리즘 - 스택의 Push 알고리즘 ① top ← top+1; ▪ 스택 S에서 top이 마지막 자료를 가리키고 있으므로 그 위에 자료를 삽입하려면 > 먼저 top의 위치를 하나 증가(+1) ▪ 만약 이때 top의 위치가 스택의 크기(stack_SIZE)보다 크다면 > 오버플로우(Overflow) 상태가 되므로 삽입 연산을 수행하지 못하고 연산 종료 ② S(top) ← x; ▪ 오버플로우 상태가 아니라면 스택의 top이 가리키는 위치에 x 삽입 push(S, x) top ← top+1; // ① if (..

스택(Stack)

1. 개요 - 접근, 삽입 및 삭제 * 스택 탑만 접근 가능 * 한쪽 끝에서 삽입, 삭제 ▷ 삽입, 삭제 위치를 스택 탑 부근으로 제한 ▷ 구현 자료구조에서 탑이 아닌 다른 곳을 접근할 수 있어도 하지 않기로 약속 - 연산 스택 탑에 푸시(Push) - 삽입, 팝(Pop) - 삭제 2. 추상 자료형 스택 - 주요 작업 - 주요 함수 ▪ GetTop(Push(S, X)) = X ▪ Pop(Push(S, X)) = S ▪ IsEmpty(Create( )) = TRUE ▪ IsEmpty(Push(S, X)) = FALSE ▪ GetSize(Push(S, X)) = GetSize(S) + 1 스택의 구현 1. 배열을 이용한 스택의 구현 - 연산 // StackA.h (C Interface by Array) #d..

New InputSystem 에서 마우스 스크롤(휠) 값으로 카메라 줌 만들기

기존 InputManager에서 InputSystem으로 갈아타면서 수정해주고 알아가야할게 많다. 마우스 스크롤 값 또한 구글링을 해도 잘 나와있지 않았다. > 먼저 InputActions에서 마우스 휠값을 받을 Actions을 생성해야 한다. > Action Type은 Pass Through로, Control Type은 Axis로 설정 한다. > 그리고 Actions 오른쪽의 +를 눌러 Add Binding을 눌러 바인드를 생성한다. > Path에서 Mouse를 누르고 아래쪽에 Scroll의 Y값을 받도록 설정한다. Action은 설정이 되었고, 스크립트를 보기전에 먼저 InputActions의 클래스를 생성해야 한다. 아래와 같이 Generate C# Class를 체크하고 Apply를 눌러 클래스를 ..

Cinemachine Free Look Camera 민감도 조절

Cinemachine Free Look Camera을 통해 캐릭터 화면 회전을 하게 되면 버벅이거나 끊겨서 움직여지는 것처럼 느껴질 것이다. 그 이유는 기본적으로 InputManager의 Mouse X, Mouse Y의 입력을 받기 때문인데, 민감도 설정이 1로 되어 있기 때문에 세밀한 움직임을 갖지 못하는 것이다. 조금 부드럽게 움직이고 싶으면 아래와 같이 하며 된다. 1. 상단의 Edit - Project Settings - InputManager를 연다. 2. InputManager에서 Mouse X와 Mouse Y의 Sensitivety(민감도) 값을 1보다 낮춰준다. (기본값 1은 윈도우 마우스 민감도와 같다.)

Input Error

구 input에서 new Inputsystem을 바꾸려니까 고쳐야할게 한두가지가 아니며 아래와 같은 에러도 발생한다..ㅠㅠ You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. 번역상 새로운 인풋시스템을 사용하는데 왜 예전꺼를 다시 쓰려고 하냐는 말..ㅎㅎ 해결 방법은 먼저 edit - project settings을 눌러 프로젝트 세팅창을 연다. 그리고에 player탭에서 아래쪽에 Configuration - Active input handling을 Both로 교체하면 된다.

연결 리스트

연결 자료구조 1. 순차 자료구조의 문제점 - 문제점 1) 삽입 연산이나 삭제 연산 후에 연속적인 물리 주소를 유지하기 위해서 원소들을 이동시키는 추가적인 작업과 시간 소요 * 원소의 개수가 많을수록 원소들이 이동 작업으로 인한 오버 헤드가 많음 * 삽입, 삭제, 연산이 많이 발생하는 경우에 성능 상의 문제 발생 2) 순차 자료구조는 배열을 이용하여 구현하기 때문에 배열이 갖고 있는 메모리 사용의 비효율성 문제를 그대로 가짐 2. 연결 자료구조의 정의 - 연결 자료구조(Linked Data Structure) : 자료의 논리적인 순서와 물리적인 순서가 일치하지 않는 자료구조 * 각 원소에 저장되어 있는 다음 원소의 주소(Pointer)에 의해 순서가 연결되는 방식 -> 물리적인 순서를 맞추기 위한 오버 ..

리스트와 단순 연결 리스트

연결 리스트 1. 연결 리스트란? * 리스트의 목록을 순서대로 연결한 것 2. 연결 리스트의 기초 typedef struct { int Data; //노드 내부의 실제 데이터 또는 레코드 node* Next; //Next가 가리키는 것은 노드 타입 } node; //구조체에 노드라는 새로운 타입명 부여 typedef node* Nptr; //Nptr 타입이 가리키는 것은 노드 타입 Nptr p, q; //Nptr 타입 변수 p, q를 선언 - 노드 이어붙이기 p = (node *)malloc(sizeof(node)); p->Data = 33; p->Next = (node *)malloc(sizeof(node)); p->Next->Data = 22; p->Next->Next = NULL; 3. 출력, 삽입..

선형 리스트의 구현

1차원 배열을 이용한 선형 리스트의 구현 1. 구현 - 1차원 배열을 이용한 구현 int sale[4] = {157, 209, 251, 312}; * 특징: 동종의 데이터, 연속적 할당 * 물리적 구조 a = 배열이 시작되는 주소 ex) a = 2000이라면 sale[3]의 주소(&sale[3])는 200 + 3x4 = 2012이다. 2차원 배열을 이용한 선형 리스트의 구현 1. 구현 - 2차원 배열을 이용한 구현 int sale[2] [4] = {{63, 84, 140, 130}, {157, 209, 251, 312}}; * 논리적 구조 - 2차원 배열의 물리적 저장 방법 * 2차원의 논리적 순서를 1차원의 물맂적 순서로 변환하는 방법을 사용 - 행 우선 순서 방법(Row Major Order) > 2..