250 ○
500 未提出
1000 未提出
Rate 955 -> 789
250
public class LuckyCounter {
 public int countLuckyMoments(String[] moments) {
  int lucky = 0;
  
  for(String s : moments) {
   StringBuffer h = new StringBuffer(s.substring(0, 2));
   StringBuffer m = new StringBuffer(s.substring(3));
   if(h.toString().equals(m.toString())) {
    lucky++;
    continue;
   }
   if(h.toString().equals(m.reverse().toString())) {
    lucky++;
    continue;
   }
   
   if((h.toString().charAt(0) == h.toString().charAt(1)) && (m.toString().charAt(0) == m.toString().charAt(1))) {
    lucky++;
   }
  }
  return lucky;
 }
 
 private static void echo(Object out) {
  System.out.println(out);
 }
}StringBufferでreverseができるのを最近知って、使ってみたくて使ったらStringBufferはequalsが使えないの知らなくて時間が無駄にかかってしまった。今回Rateが大幅に下がった理由はこれ。
というか俺Javaを知らなさすぎだろ・・・普通に解いたほうが早かったね・・・
500
public class Starport {
 public double getExpectedTime(int N, int M) {
  int a = gcd(N, M);
  return (double)(N - a) / 2.0;
 }
 
 private int gcd(int a, int b) {
  if(b == 0) return a;
  return gcd(b, a % b);
 }
 
 private static void echo(Object out) {
  System.out.println(out);
 }
}式がわかればこんなに簡単にかけるのか・・・まだよく理解してない。
0 件のコメント:
コメントを投稿