これをC++で解き直した.
先にコード貼っとく,出来はひどい,
#include <iostream> #include <map> using namespace std; int main() { map<char, int> hash; // entry hash['0'] = 6; hash['1'] = 2; hash['2'] = 5; hash['3'] = 5; hash['4'] = 4; hash['5'] = 5; hash['6'] = 6; hash['7'] = 3; hash['8'] = 7; hash['9'] = 6; string s; cin >> s; int res = 0; for(int i = 0; i < s.length(); i++) { res += hash[s[i]]; } cout << res << endl; return 0; }
とにかく,久々に描いてみたらわからないところだらけで最悪だった.(セミコロンつけることすら忘れまくってた)
まず,mapがわからないので,mapを調べてくる.
最初unordered_mapを使おうとしたが,わからなかったので,放置.覚えてたらまた調べる.
C++ ハッシュ連想配列クラス unordered_map 入門
結局普通のmapの使い方を学ぶ.
C++での動的配列(set,map)の使い方まとめ | Futurismo
stringとcharの違いと意識しなければならない事自体が久々で,非常に気持ちが悪かったのは内緒.
登録のところがかなりアホくさいが,アレで限界だった.
改善案としては配列化してしまって,回すのだろうか,ああでもマジックナンバーとしてアスキーコードがはいっていて気持ちが悪い.
// entry int arr[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; for(int i = 0; i < 10; i++) { hash[i + 48] = arr[i]; }
で,次はstringの扱い方がわからないので,メソッドを探す,ここではfor文のための長さがわかるメソッドを探していた.
このリンクは非常によくメソッドがまとまっているので,また活用したいと思う.
最後は完全にコンパイルの方法を忘れていたので,ここを参照.
プログラミング :: 初めての C++ :: コンパイルと実行
g++ filename.cpp -o outputname
みたいなコンパイルをした.
で,テストして提出.とても大変だった.
教訓:C++のマクロを作っておいたほうが良い.探すのが大変である.