Problem Solving/Problem Solving with JAVA

[Topcoder] SRM149 ~

끄적끄적 2010. 6. 8. 16:01


SRM 149 DIV2 
: 전에 C++로 짤 때는 크기별로 분기로 처리했었네;

class FormatAmt
{
 public String amount(int d, int c)
 { 
  String ret = "";  
  int m = d;
  
  while(true)
  {
   if( m / 1000 == 0)
   {
    ret = (m % 1000) +  ret;
    break;
   }
   else
   {
    String s = String.valueOf(m % 1000);
    while( s.length() < 3) s = "0"+s;
    
    ret = ","+ s + ret;    
    m = m / 1000;        
   }
  }
  
  String str = "$" + ret +  ".";
  if( c > 9) str += c;
  else str = str + "0" + c;
  
  return str;
 } 
}

SRM 150 DIV2 
: 예전과 똑같이 풀었네..  마지막날 남은일 계산을 (remain + n -1) / n 와 같이 짤 수 있도록

class WidgetRepairs
{
 public int days(int[] a, int n)
 { 
  int ret = 0;  
  int remain = 0;
  
  for(int i = 0; i < a.length; i++)
  {
   remain += a[i];
   if( remain > 0 ) ret++;
   
   remain -= n;
   if(remain < 0) remain = 0;
  }
  
  while( remain > 0 )
  {
   ret++;
   remain -= n;
  }
  
  return ret;
 } 
}


SRM 151 DIV2 
: 문제해석이 좀 걸렸다. 예전에는 허프만알고리즘을 최근에 읽어서 바로 풀었던거 같은데;
역시 알고리즘 책을 자주 봐야..

class PrefixCode
{
 public String isOne(String[] w)
 {     
  for(int i=0; i< w.length; i++)
  {
   String w1 = w[i];
   for(int j=0; j < w.length; j++)
   {
    if( i == j ) continue;
    if( w[j].startsWith(w1) )
    {     
     return "No, "+ i;     
    }    
   }
  }  
  return "Yes";
 } 
}
반응형