분류 전체보기

    [자료구조] Array 와 LinkedList의 차이

    [자료구조] Array 와 LinkedList의 차이

    Array(배열) : 연결된 메모리를 보장하여 중간데이터에 빠르게 탐색이 가능하지만 삽입이나 삭제의 경우에데이터를 전부 이동해야하기에 비효율적이다. Array(배열)는 가장 기본적인 자료구조로 정적 자료구조이다. 인덱스를 통해 해당 원소에 접근가능하다. 따라서 시간 복잡도는 0(1)으로 빠르게 찾을 수 있다. Random access가 가능하다는 장점이 있어 접근과 탐색에 용이하다. 하지만 삭제나 삽입 과정에서 원소에 접근해서 작업을 할 때는추가적인 작업이 발생해 시간이 더 걸린다. 예를 들면 어느 원소를 삭제한다고 했을 때 연속적인 배열이 깨지기 때문에 빈공간이 생긴다. 따라서 삭제한 원소보다 큰 인덱스를 갖는 원소들을 움직이기에 비용(cost)이 발생하고 시간복잡도는 0(n)이 된다. 삽입도 마찬가지..

    [Unity]Awake 와 Start의 차이

    [Unity]Awake 와 Start의 차이

    유니티 생명주기를 공부하다 Awake와 Start의 차이에 대한 질문이 들어왔다. 가장 중요한 호출순서의 목적에 대해 공부를 해볼 필요를 느꼈다. 공통점은 둘 다 한 번만 실행되는 초기화 이벤트함수지만 호출시기에 따른 차이가 있다. Awake - 스크립트와 연결된 게임오브젝트가 인스턴스화되거나 스크립트가 처음 로드될때 불린다. 즉 가장 먼저 호출된다. - 해당 오브젝트가 Enable상태가 아니어도 위의 조건이면 호출된다. - 다른 오브젝트에 대한 참조를 생성할 때 주로 사용한다. Start - 해당 스크립트 컴포넌트가 활성화되는 순간 호출된다. - 호출시기는 Awake보다는 느리고 첫 Update보다는 빠르게 호출 - 참조를 통해 접근하는 작업이 가능하다. 즉, Awake는 항상 Start 함수 이전이나..

    [CS]객체지향프로그래밍(OOP) 특징

    [CS]객체지향프로그래밍(OOP) 특징

    객체지향프로그래밍(Object - Oriented Programming, OOP) 객체들의 유기적인 협력과 결합으로 파악하고자하는 컴퓨터프로그래밍의 패러다임 객체지향적으로 프로그램을 설계하는데는 큰 이점이 있다. 장점 1. 프로그램을 보다 유연하고 변경이 용이 2. 코드의 변경을 최소화하고 유지보수하는데 용이 3. 코드의 재사용을 통해 반복적 코드 최소화 4. 코드를 최대한 간결하게 표현 5. 인간친화적이고 직관적인 코드 작성 이러한 장점으로 객체지향프로그래밍의 4가지 특징이 있다. 추상화, 상속, 다형성, 캡슐화 이다. 객체(Object) 객체는 OOP의 가장 기본적인 단위이다. 모든 것이 객체들간의 상호작용을 통해 출발되기 때문이다. 체스를 예를 들면 체스말에는 다양한 기물이 있다. 왕, 여왕, 폰,..

    [Unity] 생명주기 Life Cycle

    [Unity] 생명주기 Life Cycle

    생명주기(Life Cycle) 클래스를 상속받은 오브젝트가 씬에 있는 동안 일정한 흐름에 따라 함수를 호출하는데 이 패턴의 흐름이 생명주기이다. 그 중 중요흐름도이다. Initialization 1. Awake - 스크립트가 실행될 때 한번만 실행 - 오브젝트 비활성화시 호출되지 않지만 스트립트가 비활성화일경우 호출 - 코루틴으로 실행불가 - 게임의 상태나 변수초기화로 사용 - 오브젝트의 초기화나 프리팹의 인스턴스화가 모두 진행된 직후에 호출되기 때문에 Find함수 호출의 안전성 보장 2. OnEnable - 객체가 활성화될때마다 호출 - 코루틴으로 실행불가 - 이벤트 연결 시 사용 3. Start - 스크립트가 실행될 때 한 번만 실행 - 객체가 비활성되면 호출되지 않는다 - 코루틴으로 실행가능 Phy..

    [CS]선형 비선형 자료구조

    [CS]선형 비선형 자료구조

    자료구조를 크게 분류하면 선형구조 비선형 구조가 있다. 선형구조(Linear) 원소들을 1:1로 앞뒤 관계로 순차적인 자료구조이다. 배열과 리스트, 스택 큐등이 있다. 비선형구조(NonLinear) 원소들간의 앞 뒤 관계로 여러개의 자료가 존재하는 계층적인 자료구조이다. 트리와 그래프 등이 있다. 트리는 크게 일반트리와 이진트리로 구분된다.

    프로그래머스 k번째수(정렬, 스택 큐로 )

    프로그래머스 k번째수(정렬, 스택 큐로 )

    K번째수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr using System; using System.Collections.Generic; using System.Linq; public class Solution { public int[] solution(int[] array, int[,] commands) { //2차원 배열의 행 갯수만큼 answer 배열 초기화 int[] answer= new int[commands.GetLength(0..

    TCP /UDP 특징 및 차이

    TCP /UDP 특징 및 차이

    1. TCP(Transmission Control Protocol) : 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜(TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜) 연결 지향 방식으로 패킷 교환 방식을 사용한다(가상 회선 방식이 아님). 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 흐름 제어 및 혼잡 제어. 높은 신뢰성을 보장한다. UDP보다 속도가 느리다. 전이중(Full-Duplex), 점대점(Point to Point) 방식. TCP 서버의 특징 서버소켓은 연결만을 담당한다. 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다 서버와 클라이언트는 1대1로 연결된다. ..

    유니티 오브젝트 생성시 하위 오브젝트로 생성하기

    유니티 오브젝트 생성시 하위 오브젝트로 생성하기

    FPS 게임을 만드는 중 오브젝트가 하이어라키 상단에 생성되는 문제점이 발생했다 클린 코드와 구조화를 목표로 하기에 자신의 부모 오브젝트에 생성하는 방법의 코드이다 //생성 위치 GameObject bullet = Instantiate(attackBulletFactory, firePos.transform.position,Quaternion.identity); //부모 오브젝트에서 생성 bullet.transform.parent = this.transform; 이렇게 하게되면 생성되는 것이 상단 하이어라키에서 보는 문제점을 해결 할 수 있다.