問題概要
キーが一つしか無い携帯電話で文字を入力することを考える。すなわち、アルファベットの n 番目( 1-indexed )の文字を入力するためには、キーを n 回押す必要があるとする。
英大文字からなる文字列 word を入力するために、キーを押さなければならない回数を求めよ。
解法
ある文字 c を入力するためには、c - 'A' + 1 回のキー入力が必要になります。従って、word の各文字 c について、c - 'A' + 1 の値を計算して総和をとることで、キーを押さなければならない回数が求まります。
コード
#define ALL( c ) (c).begin(), (c).end() class WritingWords { public: int write(string word) { return accumulate( ALL( word ), 0 ) - word.size() * ( 'A' - 1 ); } };