Algorithm
Programmers - 기능 개발, 짝지어 제거하기, 멀쩡한 사각형
HI2
2021. 6. 9. 17:55
[ 기능 개발 ] : < LV2 / 22829명 >
더보기
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds)
{
vector<int> answer;
//
int totalRelease = progresses.size();
int todayRelease = 0;
int priority = 0;
while(priority < totalRelease)
{
todayRelease = 0;
// daily work
for(int i = priority; i < progresses.size(); ++i)
progresses[i] += speeds[i];
// check release
for(int i = priority; i < progresses.size(); ++i)
{
if(progresses[i] >= 100)
{
++todayRelease;
++priority;
}
else
break;
}
//
if(todayRelease != 0)
answer.push_back(todayRelease);
}
//
return answer;
}
[ 짝지어 제거하기 ] : < LV2 / 5325명 >
더보기
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int solution(string s)
{
stack<char> res;
//
if( (s.size() < 2) || (s.size() % 2 == 1) )
return 0;
//
for(int i = 0; i < s.size(); ++i)
{
char c = s[i];
//
if(res.empty())
res.push(c);
else
{
if(res.top() == c)
res.pop();
else
res.push(c);
}
}
//
return res.empty();
}
# STL::stack
# top 실행 전 empty 체크(Segmentation Fault)
[ 멀쩡한 사각형 ] : < LV2 / 8014 명 >
더보기
using namespace std;
long long GetGCD(long long a, long long b)
{
long long mod = 0;
//
while(b != 0)
{
mod = a % b;
a = b;
b = mod;
}
//
return a;
}
long long solution(int w,int h)
{
long long answer = (long long)w * (long long)h;
// GetGCD ( 유클리드 호제법 )
long long gcd = GetGCD(w, h);
// logic
answer -= (w + h - gcd);
//
return answer;
}
# 최대공약수, gcd, 유클리드 호제법
# logic : (1 + (w' - 1) + (h' - 1)) * gcd => w + h - gcd