[C++] 프로그래머스 야근 지수
·
Algorithm/Programmers
#include #include #include using namespace std; // 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다 // 높은 순으로 정렬해서 평균을 낮춰야한다. long long solution(int n, vector works) { long long answer = 0; priority_queue q; for(int i = 0; i 0) { if(q.empty()) { break; } n--; int currNum = q.top() - 1; q.pop(); if(currNum > 0) { q.push(currNum); } } while(!q.empty..
[C++] 리트코드 Count and Say
·
Algorithm/HackerRank, LeetCode
class Solution { public: string countAndSay(int n) { if (n == 1) { return "1"; } string result = countAndSay(n - 1); //left Count right Num string currResult; char currNum = result[0]; int currCount = 0; for (int j = 0; j < result.length(); j++) { if (currNum == result[j]) { currCount++; } if (currNum != result[j]) { currResult += to_string(currCount) + currNum; currCount = 1; currNum = result[j..
[C++] 프로그래머스 숫자의 표현
·
Algorithm/Programmers
#include #include using namespace std; int solution(int n) { int answer = 0; for(int i = 1; i
[C++] 프로그래머스 [PCCP 기출문제] 2번 / 석유 시추
·
Algorithm/Programmers
#include #include #include #include using namespace std; bool visited[500][500]; void dfs(int x, int y, int &count, set& targetNum, const vector& land) { if (visited[x][y]) { return; } visited[x][y] = true; count++; targetNum.insert(y); if (x + 1 < land.size()) { if (land[x + 1][y] == 1) { dfs(x + 1, y, count, targetNum, land); } } if (y + 1 < land[x].size()) { if (land[x][y + 1] == 1) { dfs(x, ..
[C++] 리트코드 221. Maximal Square
·
Algorithm/HackerRank, LeetCode
class Solution { public: int maximalSquare(vector& matrix) { //최대 사각형의 너비를 구하라 int result = 0; int dp[300][300]{0}; for(int m = 0; m < matrix.size(); m++) { if(matrix[m][0] == '1') { result = 1; dp[m][0] = 1; } } for(int n = 0; n < matrix[0].size(); n++) { if(matrix[0][n] == '1') { result = 1; dp[0][n] = 1; } } for(int m = 1; m < matrix.size(); m++) { for(int n = 1; n < matrix[m].size(); n++) { ..
[C++] 리트코드 279. Perfect Squares
·
Algorithm/HackerRank, LeetCode
class Solution { public: int numSquares(int n) { vector dp(n+1, n+1); vector dpNum; int sum = 1; dp[sum] = 1; dpNum.push_back(sum); for(int i = 3; i < n+1; i+=2) { sum += i; if(sum