読者です 読者をやめる 読者になる 読者になる

Topcoder SRM 348 DIV 2 250

明日からテストなんですが、金曜日から出ていた熱がやっと引きました。

土曜日Topcoderなんで病み上がり記念にやってみたら、for内のiの宣言の時初期化うっかり忘れてたりと感覚が死んでました、恐い。記憶力ってか学習したことが体に染み付いていかないの恐いなー。

まぁ、いつもの如く無造作に250点問題選んでコーディング。250点問題だけじゃお話にならないと思いつつも、やっぱり技術とか知識が乏しいのでそこに留まっている。できるようになりたいなぁ。

#include <cmath>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

class OptimalList {
public:
  string optimize(string inst) {
    stringstream result;
  	int x=0,y=0;
  	for(int i=0;i<inst.length();i++)
  	{
  		if(inst[i]=='N')
  			y++;	//North is +
  		if(inst[i]=='S')
  			y--;	//South is -
  		if(inst[i]=='E')
  			x++;	//East is +
   		if(inst[i]=='W')
  			x--;	//West is -
  	}
	if(0<x)for(int i=0;i<abs(x);i++)result << "E";
  	if(0>y) for(int i=0;i<abs(y);i++)result << "S";
  	if(0<y)for(int i=0;i<abs(y);i++)result << "N";
  	if(0>x) for(int i=0;i<abs(x);i++)result << "W";
  	return result.str();
  }
};
System> kyuridenamida has submitted the 250-point problem for 214.65 points

英文読むのにちょっと時間掛かった(4分くらい)あとはコード書いてる途中にミス多すぎて動作しないみたいなことも。

頭悪いんだし無理せずに丁寧にコーディングしよう。

相変わらずのコードの汚さ(主に最後らへん)ですが、これは何かこれじゃないとNSWEの出力する順番的に通らなかったので、謎。

トップコーダーやってて思うけど250点問題って大体タイトルとreturn値で分かるような気がする。今度からそのスタイルでいこう。