반응형 [백준]214 [BaekJoon/백준] 1021번 덱 활용 문제 이해를 도저히 못하겠더라.. 예제에 대한 계산을 아무리 해봐도 예제 정답처럼 답이 나오지 않는다. 다른 사람의 풀이를 봤다. 문제에서 '양방향 큐 (= 덱)' 이라고 직접 말해놓고, 최솟값을 구하는 과정에서 조건 1번이 DequeFront만 해당되는 조건이였더라.. 나는 DequeRear도 1번에 취급되는줄 알았다... 좋지 않은 문제인 것 같다. 그냥 문제일 뿐이지 이용에 모순이 있어서.. 문제의 핵심은 1 2 3 4 5 6 7 8 9 10 이 있을 때, find_sequence를 구현하는게 중요하다. 즉 숫자 N의 인덱스를 구하는 것. 그리고 조건 2번을 통해 뽑아내는 경우와 조건 3번을 통해 뽑아내는 경우에 대한 구분은 이렇다. 조건 2번 : index 값 조건 3번 : 전체갯수 - index.. 2021. 3. 10. [BaekJoon/백준] 10866번 덱 구현 구현.. 오래걸렸다.. 예전에 양방향 큐(=덱)을 구현한 적이 있는데, 해당 코드에서 PeekRear 함수 구현부분이 틀려서, 다시 수정해서 업데이트했다. 덱이란 양방향 큐이다. 시작(front)와 끝 지점(rear)에서 양쪽으로 데이터를 인큐하거나 디큐하는 자료구조다. 그리고 이전 큐 구현 예제들과 동일한 링버퍼 구조 기반으로 구현했다. (구조체의 종류, 역할, 세팅값도 동일) #include #include #include typedef struct { int max; int num; int front; int rear; int *que; } Deck; int InitialIize(Deck *d, int max) { d->num = d->front = d->rear = 0; if((d->que = c.. 2021. 3. 10. [BaekJoon/백준] 1966번 큐 활용 큐를 발전시킨 문제. 큐는 원래 FIFO인데, 각 데이터에 우선순위를 매긴 뒤 각 데이터들이 출력되는 과정을 다루는 문제. 큐를 두개 사용한 C언어로 풀었다. 흐름을 이해하는데 생각보다 너무 오래걸렸다.. #include #include #include // 링 버퍼 구조로 큐를 구현 typedef struct { int max; // 큐의 용량 int num; // 현재 데이터 수. front와 rear의 값이 같은 경우 큐가 비어있는지, 가득찼는지 구별할 수 없는 상황을 피하기 위해 사용. int front; // 프런트. 첫 번째 요소의 인덱스를 저장 int rear; // 리어. 맨 나중에 넣은 요소의 하나 뒤의 인덱스를 저장 (다음 인큐 시에 데이터가 저장될 요소의 인덱스를 미리 준비하는 것) .. 2021. 3. 9. [BaekJoon/백준] 11866번 큐 활용(요세푸스 문제) 이 문제를 큐로 끌어내는 데에만 시간이 좀 걸렸다. N = 7, K = 3이라고 보자. 1 2 3 4 5 6 7 1부터 시작하여 세번째는 3 1 2 3 4 5 6 7 max = max; return 0; // 성공 } int Enque(IntQueue *q, int x) { if(q->num >= q->max) { return -1; } q->num++; q->que[q->rear++] = x; q->rear = q->rear % q->max; // 그냥 q->rear == q->max 일 때, q->rear = 0 해줘도 됨. return 0; } int Deque(IntQueue *q, int *x) { if(q->num num--; *x = q->que[q->front++]; q->front = q.. 2021. 3. 9. 이전 1 ··· 26 27 28 29 30 31 32 ··· 54 다음 반응형