본문 바로가기

전체 글252

[백준 10814번][C++] 나이순 정렬 #include #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 user[201]; for (int i = 0; i > age >> name; user[age].push_back(name); } for (int i = 1; i 2023. 8. 1.
[백준 1181번][C++] 단어 정렬 #include #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; // 중복이 없어야 하므로 set 컨테이너 사용 // 각 문자의 길이별로 구분하여 담음 set dictionary[51]; for (int i = 0; i > s; dictionary[s.size(.. 2023. 8. 1.
[개발더미][Unity] 바라보는 방향으로 회전 struct RotData { // 회전 데이터 public float angle; // 회전 각도 public float rotDir; // 회전 방향 } void CalculateAngle(Vector3 forwardDir, Vector3 rightDir, Vector3 lookDir, out RotData data) { // 각도 계산 함수 // 자신의 앞 방향 forwardDir과 바라봐야 할 방향 lookDir 사이의 각도를 구하는 함수 // 1. 각 입력 벡터를 정규화하여 크기를 1로 세팅 // 2. 두 벡터 사이의 각도를 x라고 하면 cos(x)는 자신의 forwardDir의 크기 1과 forwardDir, lookDir의 내적값의 크기 d로 구할 수 있음 // 3. cos(x) = d/1 .. 2023. 7. 29.
[면접 준비] OOP란 무엇인가? 1.OOP - OOP(Object Oriented Programming)란 객체 지향 프로그래밍을 뜻한다. - 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 사용한다. - 객체들이 서로 유기적으로 상호작용하는 특징이 있다. - 대표적으로 Java와 C#이 있다. cf) 객체 - 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹 - ex) 컴퓨터(객체) -> 데이터(본체, 모니터, 키보드) + 기능(화면, 소리, 입력, 출력) 2. OOP의 장점 1) 코드 재사용성 증가 - 상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음. 2) 생산성 향상 - 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음. 3) 자연적인 모델링 - 우리 일상생활의 모습의.. 2023. 7. 29.
[백준 11651번][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); int N; cin >> N; map XY; for (int i = 0; i > x >> y; XY[y].push_back(x); } for (map::iterator iter = XY.begin(); iter != XY.end(); iter+.. 2023. 7. 29.
[백준 11650번][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; cin >> N; map XY; for (int i = 0; i > x >> y; XY[x].push_back(y); } for (map::iterator iter = XY.begin(); iter != XY.end(); iter+.. 2023. 7. 28.
[면접 준비][Unity] 드로우 콜(Draw Call) 1. 드로우 콜(Draw Call)이란? - CPU는 현재 프레임에 어떤 것을 그려야 할지 정하고 ,GPU에 오브젝트를 그려달라는 명령을 호출하는데 이 명령이 드로우 콜이다. - 한 오브젝트를 그릴때마다 CPU가 매번 렌더 상태(Render States)들을 변경하라는 명령을 한 뒤, DP Call을 해주는 과정 cf) 렌더 상태(Render States) - 오브젝트를 렌더링하기 시작하면 GPU에서 사용할 텍스쳐, 버텍스, 셰이더 등을 순차적으로 알려줘야 하는데 이러한 순서 정보들을 담은 테이블을 렌더 상태라고 하며, 각각의 요소는 GPU 메모리를 가리키는 포인터를 저장한다. cf) DP Call(Draw Primitive Call) - CPU가 렌더 상태를 변경하는 명령을 GPU에 보내고 나서 마지막.. 2023. 7. 27.
[백준 1427번][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; cin >> N; vector count(10); // 0~9까지의 숫자들의 갯수를 담을 벡터 // 자릿수 별로 갯수를 파악 while (N > 0) { int curNum = N % 10; // 마지막 자릿수 count[curNum]++; N /= 10; } // 자릿수 별 갯.. 2023. 7. 27.
[면접 준비] 배열이 순차적으로 데이터를 저장하는 이유 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.