2024/10 52

[백준 골드2] 1377 버블 소트

https://www.acmicpc.net/problem/1377 swap된 거리가 가장 길었던 것에 +1을 하면 된다.여기서 버블 정렬의 이중 for문에서 안쪽 for문이 돌 때swap이 일어나지 않은 반복문이 한 번 더 실행되는 것을 감안해 최댓값에 1을 더한다.  #include #include #include #include #include #include #include #include #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); int n, max = 0; cin >> n; vector>v(n); for (int i = 0; i > v[i].first; ..

[실버3] 1021 회전하는 큐

https://www.acmicpc.net/problem/1021  앞 뒤로 출력한다는 점에서 STL deque를 사용하는 것을 알 수 있었다. https://www.acmicpc.net/problem/1021#include #include #include #include #include #include #include #include #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); deque d; vector v; int n, m, count = 0; int idx; cin >> n >> m; for (int i = 1; i > x; v.push_ba..

[실버3] 17253 삼삼한 수 2

https://www.acmicpc.net/problem/17253 3의 0제곱도 포함하는 것이니, n%3의 값이 1이 될 수 있다.또한 음의 수는 포함하지 않으나, "작거나" 같은 수라 했다.작거나는 0의 예외처리를 뜻하는 것이다.0의 경우 예외처리가 바로 생각나지 않아서 4번 틀렸다.  #include #include #include #include #include #include #include #include using namespace std;bool IsSumOfPowers(long long int n);int main(){ ios::sync_with_stdio(0); cin.tie(0); long long int n; cin >> n; if (n == 0) { ..

이득우의 게임 수학 열기

Update - 콘텐츠를 구성하는 물처의 최종 위치를 계산하고 이를 변수에 저장 Render - 변수에 저장된 물체의 위치를 읽고, 이를 중심으로 물체를 화면에 그려냄 실제 실습 코드가 사용될 영역 이 코드에서 InputAxis::XAxis는 enum class 이다. 어떠한 상태 변환을 enum으로 변환시켜주는 것이다.// 게임 로직과 렌더링 로직이 공유하는 변수 Vector2 currentPosition(100.f, 100.f); // 게임 로직을 담당하는 함수 void SoftRenderer::Update2D(float InDeltaSeconds) { // 게임 로직에서 사용하는 모듈 내 주요 레퍼런스 auto& g = Get2DGameEngine(); const InputManager& input..

[백준 실버1] 11286 절대값 힙

중요한 조건은 드래그한 저 줄이다. 배열에 입출력에 대한 조건이 있다.1. 입력할 때 0이 아닐 때,2. 출력할 때 0일 때, 하지만 출력에 조건이 있다.1. 절대값이 가장 작을 것2. 절대값이 가장 작은 수가 중복될 경우 가장 작은수 출력(= 음수 출력) 출력에 대한 조건에 우선 순위에 대한 명확한 기준이 있다.이는 우선 순위 큐로 구현하기 적합함을 알 수 있다.  #include #include #include #include #include #include #include #include using namespace std;struct compare { bool operator()(int a, int b) { if (abs(a) == abs(b)) { retur..

[백준 실버4] 2164 카드2

밑에 큐라고 써있는 만큼 선입선출(FIFO)의 구조를 가질 수 있는 구현 방법이다.차례대로 넣고 빼는 순서는 가장 먼저 넣은 것을 빼고 (= 큐에 있는 것을 뺀다)그 바로 뒤에 있던 카드를 뒤에 넣는다(= 큐에 새로 추가한다).다시 그리고 세 번째에 있던 카드를 뺀다.( = 큐에 있는 것을 뺀다)라는 과정의 반복이다. 카드가 단 1장 남을 때 까지면 Queue의 사이즈가 1일때 까지가 반복문의 조건된다.#include #include #include #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(N..

[Devlog-DX11] HOLLOW KNIGHT 모작 - Audio 기능

Sound 클래스에서 STL map 을 이용한 SoundList를 관리한다. Key에는 해당 사운드를 불러올 string 을 넣어주고, Value에는 SoundNode 구조체를 가지고 있다. 따라서 Key값의 string 입력에 규칙을 정하면 음원 관리가 가능하다. 아래는 음원 규칙에 관련된 코드이다. E는 effect관련이며 (NPC대화 목소리, UI 소리 등) M는 배경음악을 관리한다. void Sound::SetAllVolume(float scale) { for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++) { iter->second->channel->setVolume(iter->second->volume * app.soundSc..

10월 중순을 지나며

10월에 이룬 뿌듯한 일을 써보려한다. :)뿌듯한 일윤성우 자료구조 책은 처음에는 인강으로 다 들어본 뒤,대충 한 번 더 훑었다.이후에는 다음에는처음부터 꼼꼼히 완독을 해나가려 노력했다.기간은 총 10개월 정도 걸렸다. 필사도 해가고, 필사한 걸 토대로 이론을 구현해보기도 하고,눈으로 읽어가며 이해해보려고하고,이해 안가면 코드로 따라쳐보고해서 1년 남짓한 기간 동안 다 읽어나갔다.닳아서 너덜거리기 시작하는건혼자 공부하는 C언어 책 이후로 처음이다.뒷면도 까지는 게 꽤나 알차게 읽었다는 표시같고 뿌듯했다. :) 이 책을 보면서중간에 다른 자료구조 알고리즘 책이나 강의도 조금씩 보기도 했다. 이제 코테 풀 때 조금씩 뭘 써야하는지 전보다는 보인다.앞으로 다른 책들도 잘 읽어나가며 정리도 잘 해나가야겠다.이제..

해쉬 테이블 - Collison 문제 해결책

오픈 어드레싱 방법(Open addressing method)오픈 어드레싱 방법은 충돌이 발생하면 다른 자리에 대신 저장한다는 의미가 담겨있다. 선형 조사법과 이차 조사법선형 조사법이란?충돌이 발생했을 때 옆자리가 비었는지 살펴보고, 비었을 경우 그 자리에 대신 저장하는 것이다. 예를 들어서 다음과 같이 정의된 함수 f(x)가 있고 테이블의 내부 저장소가 배열이라고 가정해보자. 해쉬 함수 key % 7 그러면 키가 9인 데이터는 해쉬 값이 2이므로 인덱스가 2인 위치에 저장된다. 이어서 키가 2인 데이터가 등장했다고 가정하면, 이 경우 해쉬 값이 2이기 때문에 앞서 저장한 키가 9인 데이터와 충돌이 발생한다. 이렇듯 충돌이 발생했을 때 인덱스 값이 3인 바로 옆자리를 살피는 것이 선형 조사법이다. 따라서..

테이블과 해쉬

테이블이란? 테이블이란 영어를 단순 번역하면 표이다. 하지만 자료구조에서 으래 말하는 테이블의 이해하기 좋은 대표적인 예는 사전을 생각하면 된다. 사전에서 단어는 Key가 되고, 단어의 뜻이나 내용은 Value가 된다. 즉 테이블에 저장되는 데이터는 Key와 Value가 하나의 짝을 이루는 것이다. 배열을 기반으로 하는 테이블 테이블 자료구조를 배열을 기반으로 제작하여 누구나 쉽게 이해할 수 있는 예제는 아래와 같다. #include #pragma warning(disable:4996) typedef struct _empInfo { int empNum; int age; } EmpInfo; int main(void) { EmpInfo empInfoArr[1000]; EmpInfo ei; int eNum; ..