프린터 큐는 큐를 활용해서 푸는 문제이다. 다만 단순히 큐만을 사용하는 문제는 아니었다. 큐에 있는 원소의 우선순위 중 가장 높은 수를 알아야 하는 데 이때 구글링을 해보면 우선순위 큐를 사용하는 유저들이 많았다. 아직 우선순위 큐에 대해 다루지 않았기 때문에 이번 풀이에서는 계수를 이용해서 문제를 풀었다. 해당 우선순위를 가지는 값의 개수를 저장하는 배열을 선언하고, 이 배열을 조사함으로써 현재 큐에서 우선순위가 가장 큰 경우를 찾고 그 값에 따라 큐에서 pop을 한 값을 다시 push할지 하지 않을 지 결정하는 식으로 해결하였다. 관찰한 값을 표시하기 위해 flag 변수가 필요했고, 구조체를 활용하여 flag와 우선순위 값을 묶고, 구조체를 원소로 하는 배열을 선언하였다. 다른 풀이에서는 구조체가 아..
원래 좌표, 압축된 좌표, 순서를 저장할 수 있도록 구조체를 선언한 후 처음에는 원래 좌표를 기준으로 정렬하여 압축된 좌표를 찾고, 그 후 입력받은 순서대로 정렬하여 압축된 좌표를 문제의 답과 같은 순서로 출력할 수 있도록 하였습니다. 작성한 코드는 다음과 같습니다. #include #include int N; typedef struct point { int x; int x_; int order; } POINT; POINT points[1000020]; int compare(const void* first, const void* second) { if (((POINT*)first)->x x) return -1; else if (((POINT*)first)->x > ((..
BOJ 11650번 좌표 정렬하기와 동일한 문제였습니다. 단지, 좌표를 정렬할 때 먼저 y좌표를 기준으로 오름차순으로 정렬한 후 y좌표가 동일할 때는 x좌표를 기준으로 오름차순 정렬하는 것으로 변경되었습니다. BOJ 11650번에 대해 작성한 글의 링크입니다. https://ark-hive.tistory.com/9 BOJ 11650번 좌표 정렬하기 구조체를 활용하여 좌표를 저장하였습니다. 저장된 좌표를 c언어의 라이브러리에 내장된 퀵 정렬을 사용하여 좌표를 정렬하였습니다. 이때 문제에서 요구하는 순서로 좌표를 출력하기 위해 comp ark-hive.tistory.com #include #include int N; typedef struct point { int x; int y; } POINT; POINT..
구조체를 활용하여 좌표를 저장하였습니다. 저장된 좌표를 c언어의 라이브러리에 내장된 퀵 정렬을 사용하여 좌표를 정렬하였습니다. 이때 문제에서 요구하는 순서로 좌표를 출력하기 위해 compare 함수를 다음과 같이 작성하였습니다. #include #include int N; typedef struct point { int x; int y; } POINT; POINT points[100020]; int compare(const void* first, const void* second) { if ((((POINT*)first)->x) x)) return -1; else if ((((POINT*)first)->x) == (((POINT*)second)->x)) { if ((..
- Total
- Today
- Yesterday
- 백트래킹
- BFS
- 큐
- Git
- 정렬
- 이진탐색
- 건이의 특제 떡국 끓이기
- 영화
- 완전탐색
- 애니메이션
- 재귀함수
- 취미
- 알고리즘
- recursive
- 구현
- C언어
- 메이플스토리
- Push
- 이분법
- BOJ
- 영어 어휘
- 구조체
- backtracking
- Verilog
- C++
- 백준
- gem5
- 너비우선탐색
- 스택
- 베릴로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |