본문 바로가기

전체 글256

[면접 준비] 배열이 순차적으로 데이터를 저장하는 이유 1. 배열의 특징 - 데이터를 순차적으로 저장 - 인덱스를 이용하여 데이터에 빠르게 접근 가능 2. 배열이 순차적으로 저장되는 이유 - 실제 메모리 상에서 데이터가 순차적으로 저장되면 맨 앞의 주소와 해당 자료형의 byte수, 인덱스 번호만으로 데이터에 접근할 수 있기 때문이다.([2,4,5] -> 2의 주소 1000 -> 5의 주소 = 2의 주소(1000) + int형(4byte)*인덱스번호(2) = 1008) - 즉, 인덱스를 이용해 데이터에 빠르게 접근하기 위해 순차적으로 저장되는 것이다. 3. 데이터가 순차적으로 저장되는 배열의 단점 - 삽입 삭제가 느림 -> 삭제나 삽입 시 해당 위치 이후의 모든 원소들을 한칸씩 이동시켜야하기 때문 - resizing이 어려움 -> 크기가 예측이 어려운 데이터를.. 2023. 7. 26.
[백준 10989번][C++] 수 정렬하기 3 #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; vector count(10001); // 원소 입력 for (int i = 0; i > x; count[x]++; // 입력된 수의 갯수를 파악 } // 원소 출력 for (int i = 1; i 2023. 7. 26.
[개발더미][Unity] 타점에 콜라이더 생성, Physic.OverlabSphere() protected override void OnAttack() { // 공격 발생시 동작 print("atk"); // 타점 주변의 콜라이더 중 Monster 레이어를 가진 콜라이더만 가져옴 // 문제 발생 : 3번째 공격부터 콜라이더 인식을 못함ㅋㅋ // 해결 -> rigidbody의 isKinematic을 체크하여 해결! Collider[] monsterColiders = Physics.OverlapSphere(attackPoint.position, 1, attackLayer); foreach (Collider col in monsterColiders) { print(col.gameObject.name + " attack"); if (col.GetComponent() == null) continue;.. 2023. 7. 25.
[면접 준비] int형이 4바이트인 이유? 1. 우리가 int형을 주로 사용하는 이유 - CPU가 가장 빠르게 처리할 수 있는 정수형이 int형이기 때문 - CPU가 연산하는 기본 단위가 32비트인데 이는 int의 메모리 크기와 동일하기 때문에 빠르게 처리 가능 2. int형이 4바이트인 이유 - CPU가 가장 효율적으로 다룰 수 있는 크기로 설정한 것임 3. int는 4바이트가 맞을까? - '정답은 아닐수도 있다' 이다. - 일반적으로 32비트 시스템에서는 4바이트 크기를 가지고, 64비트 시스템에서는 8바이트를 가진다. - 즉, CPU가 가지는 비트수에 따라서 int형은 바뀔수가 있는 것이다. - 사용하는 언어에 따라서도 달라질 수 있다. int형은 일반적으로 4바이트를 가진다고 알고 있습니다. 이는 일반적으로 CPU가 연산하는 기본 단위가 .. 2023. 7. 25.
[백준 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.