SRM159 DIV2
: 난이도가 낮은 쉬운 문제.. 문제 읽는 시간을 좀더 단축시킬 필요가 있음.
class StreetParking
{
public:
int freeParks(string s)
{
int n = s.size();
int ret = 0;
for(int i=0; i< n; i++)
{
if(s[i] != '-') continue;
if( (i+1) < n && ( s[i+1] == 'B' || s[i+1] == 'S')) continue;
if( (i+2) < n && s[i+2] == 'B') continue;
if( (i-1) >= 0 && ( s[i-1] == 'S')) continue;
ret++;
}
return ret;
}
};
SRM160 DIV2
: 평이한 문제다. 역시나 toInt, toStr 함수를 유용하게 사용하는 기회였음
class Substitute
{
public:
int toInt(string s)
{
stringstream s1(s);
int t;
s1 >> t;
return t;
}
string toStr(int num)
{
stringstream s;
s << num;
return s.str();
}
int getValue(string key, string code)
{
int ret;
string temp;
int im;
for(int i=0; i< code.size(); i++)
{
for(int j=0; j< key.size(); j++)
{
if(code[i] == key[j]){
im = j+1;
if(im == 10) im = 0;
temp += toStr(im);
}
}
}
ret = toInt(temp);
return ret;
}
};
SRM161 DIV2
: 평이한 문제. 이제 슬슬 DIV2 easy문제는 적응되어 가는 걸 느낀다..역시나 문제파악 시간단축이 관건.
class CardCount
{
public:
vector <string> dealHands(int n, string deck)
{
vector<string> ret(n);
int now = 0;
int m = deck.size() / n;
for(int i=0; i< m*n; i++)
{
now = i % n;
ret[now] += deck[i];
}
return ret;
}
};
SRM162 DIV2
: 최소공배수 구하는 함수 짜는걸 헷갈려서 조금 시간이 걸렸다..
class LCMRange
{
public:
int gcd(int a, int b)
{
if(b == 0) return a;
else return gcd(b, a%b);
}
int lcm(int first, int last)
{
int ret = 1;
for(int i=first; i<= last; i++)
{
ret = (ret /gcd(ret, i)) * i;
}
return ret;
}
};
SRM163 DIV2
: 이전 문제에서 gcd, lcm 함수를 만들어 놔서 금방 풀 수 있었다.
class Inchworm
{
public:
int gcd(int a, int b)
{
if(b == 0) return a;
else return gcd(b, a%b);
}
int lcm(int a, int b){
return a * b / gcd(a, b);
}
int lunchtime(int branch, int rest, int leaf)
{
int ret = 0;
int l2 = lcm(rest, leaf);
ret = branch / l2 + 1;
return ret;
}
};
SRM164 DIV2
: 이틀간 topcoder연습중에 현재까지 가장 좋은 인 7분만에 풀었다. ㅎ;
풀이에 확신이 있어서, 예제중에 하나만 잘 도는지 테스트해보고 바로 submit을 했는데, 다행히 에러가 없었다.
class Justifier
{
public:
vector <string> justify(vector <string> t)
{
vector<string> ret;
int m = 0;
int size = 0;
for(int i=0; i<t.size(); i++)
{
size = t[i].size();
m = max(m, size);
}
for(int i=0; i< t.size(); i++)
{
string val = t[i];
while( val.size() != m)
val = ' ' + val;
ret.pb(val);
}
return ret;
}
};