Problem Solving 61

[Topcoder] SRM376 ~ 385 연습

SRM376 DIV2 : 반복문안에서 string에 erase, insert는 삼가하고 될수있으면, 다른 string에 붙여넣는 식으로 구현하자 class PunctuationCleaner { public: string clearExcess(string d) { string ret; for(int i=0; i< d.size(); ) { if(d[i] == '!' || d[i] == '?') { int e1 = 0; while( d[i] == '!' || d[i] == '?') { if(d[i] == '?') e1 = 1; i++; } if(e1 == 1) ret += '?'; else ret += '!'; } else { ret += d[i]; i++; } } return ret; } }; SRM377 ..

Problem Solving 2008.10.06

[Topcoder] SRM370 ~ 375 연습

SRM370 DIV2 : 문제가 길어서 먼말인가 했는데 풀이는 간단; class Containers { public: int wastedSpace(vector c, vector p) { int tot = 0; REP(i, c.size()) tot += c[i]; REP(i, p.size()) tot -= p[i]; return tot; } }; SRM371 DIV2 : 문제파악이 어려웠던 문제. 다시 풀어볼 것. class CondorcetVoting { public: int winner(vector v) { int n = v[0].size(); VI d(n, 0); REP(i, n) { REP(j, n) { if(i==j) continue; int x = 0, y = 0; REP(k, v.size())..

Problem Solving 2008.10.02

[Topcoder] SRM334 ~ 347 연습

SRM334 DIV2 : 같은 값이 나올 수 있다는 걸 못 보고 실수할 수 있음. 푼 내용중에 g[0]+g[2] >= 50 인 경우는 어차피 밑에 경우랑 같은 경우였다.. 그냥 0, 1, 2 순으로 더하면서 50넘을때마다 10빼주면 되는 문제였음. class SupermarketDiscount { public: int minAmount(vector g) { sort(ALL(g)); int ret = 0; if( g[0] >= 50) ret = g[0] + g[1] + g[2] -30; else if( g[0] + g[1] >= 50) ret = g[0] + g[1] + g[2] - 10 - g[2]/50*10; else if( g[0] + g[2] >= 50) ret = g[0] + g[1] + g[2]..

Problem Solving 2008.09.29

[Topcoder] SRM419 DIV2

오늘 오전 10시에 있었던 매치. 회사에서 소음때문에 하지말까 하다 참가했다. 250과 500문제는 쉽게 해법을 생각해 냈고, 1000은 문제파악부터 어렵더니.. 입력값 받아오는거부터 버벅거려서 걍 포기했다; 500문제를 같은 방에 있는 사람들이 다들 좀 이상하게 푼거 같아서 Challenge를 좀 해봤다. 3명 성공, 3명 실패.. 근데 실패한 3명도 system test에서는 죄다 fail 나더라; ( 입력값만 잘 골랐어도 다 잡는건데 ㅡㅡㅋ) 생각보다 500에서 많이들 떨어져서 방에서 1등, DIV2 전체 25등..ㅋㅋ; 요즘은 방에서 1등아니면 꼴등이구만; 250 : 평이한 문제인듯.. class ColumnDiagramPerimeter { public: int getPerimiter(vector..

반응형