Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2012-03-27SRM358 (Practice)

SRM 358 BrokenButtons

|  SRM 358 BrokenButtons - hama_DU@TopCoderへの道 を含むブックマーク はてなブックマーク -  SRM 358 BrokenButtons - hama_DU@TopCoderへの道

http://www.topcoder.com/stat?c=problem_statement&pm=7716

  • 制約が緩いので全部試しても間に合う。
public class BrokenButtons {

	public int minPresses(int page, int[] broken) {
		int min = Math.abs(page - 100);
		boolean[] cantuse = new boolean[10];
		for (int b : broken) {
			cantuse[b] = true;
		}
		for (int d = -2000000 ; d <= 2000000 ; d++) {
			int go = page + d;
			if (go < 0) {
				continue;
			}
			boolean isok = true;
			int cnt = 0;
			if (go == 0) {
				isok = (!cantuse[0]);
				cnt = 1;
			} else {
				while (go >= 1) {
					int m10 = go % 10;
					if (cantuse[m10]) {
						isok = false;
						break;
					}
					go /= 10;
					cnt++;
				}
			}
			if (isok) {
				min = Math.min(min, Math.abs(d) + cnt);
			}
		}
		
		return min;
	}

}