kmjp's blog

競技プログラミング参加記です

TopCoder SRM 566 Div2 Easy PenguinTiles

続いてEasyも練習。
http://community.topcoder.com/stat?c=problem_statement&pm=12335

ブロックの配置が与えられるので、最初左にスライドさせ、次に上にスライドすることを考える。
この最終状態と同じ状態にするには、最低何回スライド(0~2)させるか答える問題。

この問題は穴(ブロックが無い場所)は1か所しかない。
よって、穴が最左になければ左寄せにスライド1回、最下段になければ上寄せにスライドをもう1回するだけ。

class PenguinTiles {
	public:
	int minMoves(vector <string> tiles) {
		int x,y,res=0;;
		FOR(y,tiles.size()) FOR(x,tiles[y].size()) {
			if(tiles[y][x]=='.') {
				if(x<tiles[y].size()-1) res++;
				if(y<tiles.size()-1) res++;
				return res;
			}
		}
		return 0;
	}
};

まとめ

いくらDiv2 Easyとはいえ、穴の数は任意でもよかったと思うんだけどな。