SRM 152 DIV2
: 문제해석이 어려운 문제;
class FixedPointTheorem
{
public double cycleRange(double R)
{
double ret = 0;
double X = 0.25;
for(int i = 0; i < 200000; i++)
{
X = R * X * (1-X);
}
double max_val = X;
double min_val = X;
for(int i = 0; i < 1000; i++)
{
X = R * X * (1-X);
max_val = Math.max(X, max_val);
min_val = Math.min(X, min_val);
}
ret = max_val - min_val;
return ret;
}
}
SRM 153 DIV2
: 평이한 문제
class MostProfitable
{
public String bestItem(int[] c, int[] p, int[] s, String[] items)
{
int size = c.length;
int[] v = new int[size];
int max1 = 0;
for(int i = 0; i < size ; i++)
{
v[i] = (p[i] - c[i]) * s[i];
max1 = Math.max(max1, v[i]);
}
if(max1 == 0) return "";
for(int i =0; i< size; i++)
{
if( max1 == v[i]) return items[i];
}
return "";
}
}
SRM 154 DIV2
: 자바에서 substring이 C++과 좀 다르다.. begin은 0부터 시작하고 end는 자리수+1을 넣어줘야함.
총 길이는 end-begin
class ProfitCalculator
{
public int percent(String[] items)
{
double price = 0;
double cost = 0;
for(int i = 0; i < items.length; i++)
{
price += Double.valueOf(items[i].substring(0, 6));
cost += Double.valueOf(items[i].substring(7, 13));
}
double margin = (price - cost)/price * 100 ;
return Double.valueOf(margin).intValue();
}
}
SRM 155 DIV2
: 자바가 C++보다 좀더 쉬운 문제. toCharArray로 char[]로 전환해서 사용해도 된다.
나는 String으로 해서 처리했는데 보통은 기존수*10 + 붙일 수 형식으로 했네..
class Quipu
{
public int readKnots(String knots)
{
String ret = "";
int count = 0;
for(int i = 1; i < knots.length(); i++)
{
if(knots.substring(i, i+1).equals("-"))
{
if(count != 0)
ret += String.valueOf(count);
else
ret += "0";
count = 0;
}
else if(knots.substring(i, i+1).equals("X"))
{
count += 1;
}
}
return Integer.valueOf(ret);
}
}
SRM 156 DIV2
class DiskSpace
{
public int minDrives(int[] used, int[] total)
{
int s = used.length;
int remain = 0;
for( int i=0; i < s; i++)
{
remain += used[i];
}
for( int i=0; i< s; i++)
{
remain -= total[i];
if( remain <= 0 ) return i+1;
}
return 0;
}
}