最初の20分ぐらいでSmallとMedium解き終わって、Largeは解けないからやることないな~と思っていたら、終盤にSmallの入力の範囲を読み間違えていたことに気づいて配列のサイズを変えて再提出して爆死
small
ソートしたり配列に入れたりmapに入れたりして、同じ値の要素の個数を2で割った数の総和をとる。
public class Chopsticks { public int getmax(int[] length) { int[] count = new int[101]; for(int l: length) { count[l] += 1; } int sum = 0; for(int c: count) { sum += c / 2; } return sum; } }
medium
単純にシミュレーションするだけ。
もっとTが大きい時は周期性を使ってもいい。
public class RobotHerbDiv2 { public int getdist(int T, int[] a) { int x = 0; int y = 0; int dir = 0; for(int i = 0; i < T; i++) { for(int b: a) { if(dir == 0) { y += b; } else if(dir == 1) { x += b; } else if(dir == 2) { y -= b; } else if(dir == 3) { x -= b; } dir = (dir + b) % 4; } } return Math.abs(x) + Math.abs(y); } }