N-Queen / 백트래킹
·
공부/Code Cata
📌 N-Queen 문제 규칙 📌 N-Queen 문제  ✅ 구현 코드*전체 코드더보기#include #include using namespace std;// 기존 선택된 퀸들의 col과 같으면 false// 기존 선택된 퀸들의 좌표와 대각선이면 falsebool IsSafe(const vector>& board,const vector>& queens, int row, int col){ if (queens.empty()) return true; for (auto& p : queens) { int prev_row = p.first; int prev_col = p.second; if (col == prev_col || abs(row - prev_row) ..
타겟 넘버 / 브루트 포스(완탐 DFS)
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/43165타겟 넘버를 만드는 경우의 수를 구하는 문제였고, n값이 20개 이하로 적은 편이어서 DFS로 완전 탐색으로 문제를 해결하려고 했다.#include #include using namespace std;int DFS(vector& numbers, int& target, int idx, int sum){ if (idx == numbers.size()) { return (target == sum) ? 1 : 0; } // 현재 인덱스의 numbers 요소를 더한 경우와 뺀 경우 두 가지 탐색 return DFS(numbers, target, idx + 1, ..
사전에서 몇 번째 단어인지 구하기 / 브루트 포스
·
공부/Code Cata
길이가 최대 5이기 때문에, 브루트 포스로 모든 경우의 수를 다 해보는 것이 안전하고 편하게 값을 구할 수 있을 것이라고 생각했고 그 중 DFS를 사용해 완전 탐색을 한 후, found 플래그를 사용해 목표한 단어를 찾으면 종료시켜주었다.✅ DFS를 사용한 완탐 코드#include #include using namespace std;void DFS(const string& alpha, const string& word, string now, int& cnt, bool& found){ if (now == word) { found = true; return; } if (now.size() >= 5) return; for (int i = 0; i
피로도 / 브루트 포스 기법(순열)
·
공부/Code Cata
처음에 이 문제를 접했을 때, priority_queue를 사용해 던전의 최소 피로도가 큰 기준, 최소 피로도가 같다면 소모 피로도가 작은 기준이 우선 순위가 높도록하여 던전 입장 횟수를 카운팅 해주면 될 것으로 판단했다. ✅ priority_queue를 사용한 코드#include #include #include using namespace std;int solution(int k, vector> dungeons){ struct compare { bool operator()(const pair& a, const pair& b) { if (a.first == b.first) return a.second > b.second; retu..
프로세스 / deque 활용
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/42587 문제에서 제시한 프로세스 그대로 구현하려고 생각했다.queue의 앞 요소를 꺼내와 현재 대기중인 프로세스 중, 우선순위가 더 높은 프로세스가 있다면 다시 뒤에다가 넣어야 했는데 앞과 뒤의 삽입/삭제가 빈번하다면 O(1)의 속도를 가지고 있는 deque를 사용하는게 효율적이라고 판단했다.그리고 우선순위가 더 높은 프로세스가 있는지 확인하려면 두 가지 방법이 있다.첫 번째로는 algorithm 헤더의 max_element를 사용하여 현재 priorites 배열의 max 값보다 queue의 top 요소가 작은지 큰지를 비교하고 크거나 같다면 max 값을 0으로 바꿔 갱신하는 방법이 있는데, 매 루..
기능 개발 / queue 사용
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/42586 처음에 이 문제를 접했을 때, queue 자료구조에 각 progress마다 100%까지 몇 일이 소요되는지를 저장해놓고FIFO 특성을 사용해서 앞의 소요일을 기준 값으로 뒤의 소요일을 비교했을 때, 작거나 같다면 같이 배포가 가능함으로 cnt를 증가시키고, 만약 뒤의 소요일이 크다면 answer 배열에 값을 추가한 뒤 기준 값을 교체하는 방식으로 문제를 해결해야겠다고 생각했다. ✅ queue 사용한 구현코드#include #include #include using namespace std;vector solution(vector progresses, vector speeds){ // p..