2023년 3분기 리트코드 64 - Minimum Path Sum (M) 더보기 class Solution { public: int minPathSum(vector& grid) { int m = grid.size(); int n = grid[0].size(); for (int i = 1; i next = iter; cur = cur->next; iter = iter->next; cur->next = nullptr; } .. 알고리즘/1주일 1문제 2023.10.01
2023년 2분기 리트코드 52 - N-Queens II (H) 더보기 struct Point { int row, column; Point(int row, int column) : row(row) , column(column){} }; class Solution { public: int totalNQueens(int n) { vector queens; queens.reserve(n); int ans = 0; Dfs(n, 0, queens, ans); return ans; } private: void Dfs(int n , int row, vector& queens, int& ans) { if (row == n) { ++ans; return; } for(int col=0;col max) max = curSum; } retur.. 알고리즘/1주일 1문제 2023.10.01
2023년 1분기 리트코드 40 - Combination Sum II (M) 더보기 class Solution { public: vector combinationSum2(vector& candidates, int target) { vector ret; vector current; sort(candidates.begin(), candidates.end()); search(0, target, current, candidates, ret); return ret; } //dfs void search(int startIdx, int left, vector& current, const vector& candidates, vector& ans) { if (left < 0) return; if (left == 0) { ans.empla.. 알고리즘/1주일 1문제 2023.01.23
2022년 4분기 리트코드 24 - Swap Nodes in Pairs (M) 더보기 class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode * root = new ListNode(0, head); auto cur = root; while(cur->next != nullptr && cur->next->next != nullptr) { auto left = cur->next; auto right = left->next; cur->next = right; left->next = right->next; right->next = left; cur = left; } return root->next; } }; 리트코드 25 - Reverse Nodes in k.. 알고리즘/1주일 1문제 2023.01.23
2022년 3분기 리트코드 10 - Regular Expression Matching (H) 더보기 class Solution { public: bool isMatch(string s, string p) { vector dp(s.size() + 1, vector(p.size() + 1, false)); dp[0][0] = true; for (int i = 0; i = 2 && dp[i][j - 2]) || (i > 0 && j > 1 && (p[j - 2] == '.' || p[j - 2] == s[i - 1]) && (dp[i - 1][j - 2] || dp[i - 1][j])); } } } return dp[s.size()][p.size()]; } }; 리트코드 11 - Container With Most Water .. 알고리즘/1주일 1문제 2023.01.23
2022년 2분기 프로그래머스 - 사라지는 발판 (lv3) 더보기 #include #include using namespace std; struct point { point(int x, int y) : x(x), y(y) {} int x, y; }; bool isIn(vector& board, int x, int y) { return x >= 0 && y >= 0 && x < board.size() && y < board[0].size() && board[x][y] == 1; } vector getNearBy(vector& board, point loc) { vector ret; int x, y; vector diffs { {0,1}, {0,-1}, {1,0}, {-1,0} }; for(auto diff : diffs) .. 알고리즘/1주일 1문제 2023.01.23
2022년 1분기 백준 10875 - 뱀 더보기 #include #include #include #include using namespace std; //(2,4) - (2,10) 은 is_row = false, axis=2, min = 4, max= 10 으로 표현 struct Line { bool is_row; int axis, min, max; bool operator axis == rhs.axis) return this->max axis < rhs.axis; } }; bool cross(const Line& a, const Line& b) { if (a.is_row == b.is_row) { if (a.ax.. 알고리즘/1주일 1문제 2023.01.23
2021년 4분기 1. 프로그래머스 - 입실퇴실 더보기 #include #include using namespace std; vector solution(vector enter, vector leave) { vector answer(enter.size()); vector room(enter.size()); int num_people = 0; int leave_idx = 0; for(auto entry : enter) { //지금 방에있는애들 만남횟수 1증가 int num_left_checked = num_people; for(size_t i=0 ; i 0;++i) { if (room[i] == true) { ++answer[i]; --num_left_che.. 알고리즘/1주일 1문제 2022.02.20
2021년 3분기 프래머스 - 다단계 칫솔 판매 더보기 #include #include #include using namespace std; constexpr int PRICE = 100; vector solution(vector enroll, vector referral, vector seller, vector amount) { vector answer; answer.resize(enroll.size(), 0); unordered_map IDs; int ID = 0; for(auto en : enroll) IDs[en] = ID++; vector parents(enroll.size()); //추천인을 다단계 tree상의 부모로 간주 for(int i=0;i> m; BufferedFenwickTree bft(n,m); f.. 알고리즘/1주일 1문제 2021.10.22
2021년 2분기 백준 9248 - Suffix Array (문자열 - 맨버 마이어스 알고리즘) 더보기 #include #include #include #include //https://www.acmicpc.net/problem/9248 - Suffix Array //종만북보고 재현함 using namespace std; //#define DEBUG #ifdef DEBUG void DebugSuffixArr(const vector & suffixArr, const string & s, int t = -1) { cout 음의 사이클 없음으로 최단경로 완성 return TryRelaxEdges();// 간선 완화를 다 했는데 또 완화가 된다 => 음의 사이클이 있다. } bool TryRelaxEdges() { int rel.. 알고리즘/1주일 1문제 2021.10.22