전체 글 282

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; ..

프로그래머스 LV.1 햄버거 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   int solution(vector ingredient) { int answer = 0, startIdx = 0; vector varr = {0}; for (int x : ingredient) { if (varr.back() == 1 && x == 2) { varr.back() = 12; } else if (varr.ba..

[백준 골드4] 17298 오큰수

https://www.acmicpc.net/problem/17298  오큰수는현재 수보다 크면서 오른쪽에 있는 수만 구하면 된다. 생각은 간단한데 스택을 시간 초과 안뜨고 풀 수 있다. -1로 초기화 해놓고 쓰면 예외처리를 따로 해주지 않아도 된다.스택을 이용해서 인덱스를 담아두고 꺼내쓰는 식으로 값을 비교하고,비교한 값이 크다면 정답이 되는 ans 배열에 넣어주면 된다. 그럼 오른쪽에 위치하며 자신보다 큰 값이 없던 친구들은 자동으로 -1이 되고,그렇지 않은 값들은 가까우면서 큰 수를 구할 수 있다.https://www.acmicpc.net/problem/17298#include #include #include #include #include #include using namespace std;int ..

서버 시작하기

게임 종류 별 언리얼 멀티플레이어 적합성 언리얼은 기본적으로 리얼타임 세션에 적합하다. 서버 연결 세션은 크게 세 가지로 나눌 수 있다. 1.Discovery연결할 사람을 찾고 2.Connection세션에 참여하여 클라이언트에 연결한다. 3. Synchronisation동기화하는 것이다.즉 네트워크 연결을 통해 동일한 화면을 보여주는 것이다. CMD를 이용하여, 본인 IP로 서버 여는 방법 정상 실행 화면

UE5 2024.10.14

[백준 실버2] 1874 스택 수열

https://www.acmicpc.net/problem/1874 pop한 걸로 주어진 예제의 수열을 만들 수 있느냐가 관건이다. 1. 현재 수열 값 >= 자연수현재 수열 값이 자연수보다 크거나 같을 때까지 자연수를 1씩 증가시키며자연수를 스택에 push한다.그리고 push가 끝나면 수열을 출력하기 위해 마지막 1회만 pop한다. 2. 현재 수열 값 혀재 수열의 값보다 자연스가 크다면 pop으로 스택에 있는 값을 꺼낸다.꺼낸 값이 현재 수열 값이거나 아닐 수도 있다.만약 아니라면 후입선출 원리에 따라 수열을 표현할 수 없으므로 no를 출력한 후 문제를 종료하고,현재 수열 값이라면 그대로 조건문을 빠져나온다. #include #include #include #include #include #include ..

프로그래머스 LV.1 명예의 전당

https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   result는 결국 k번째까지는 순차적으로 들어온 수 중에 가장 작은 수를 구하는 것이고,그 이후부터는 score에서 k번째 까지 큰 수중에 가장 작은 수를 구하면 된다.   #include #include #include using namespace std;vector solution(int k, vector score) { vector answer; vect..

STL 여섯 가지 주요 컴포넌트 - 컨테이너 - 시퀀스 컨테이너

STL에는 여섯 가지 주요 컴포넌트가 있다. 컨테이너, 제네릭 알고리즘, 반복자, 함수 객체, 어댑터, 할당기가 포함되어 있다. STL에는 두 가지 종류의 컨테이너가 있는데,하나는 시퀀스 컨테이너이고, 다른 하나는 정렬 연관 컨테이너이다. 시퀀스 컨테이너는 타입이 동일한 객체들을 선형으로 구성한 컬렉션이다.STL의 시퀀스 컨테이너에는 다음 세 가지 종류가 있다. vector : 가변 길이 시퀀스를 임의 접근할 수 있으며,시퀀스 맨 끝에서 수행되는 삽입과 삭제는 아모타이즈드 상수 시간에 수행이 가능하다.(여기서 임의 접근이 가능하다는 것은시퀀스의 i번째 원소를 접근하는데 걸리는 시간이 상수 시간이라는 것을 의미한다.이는 다시 말해, i값에 상관없이 소요 시간은 항상 일정하다는 뜻이다.) deque : 이것..