まず、基本的にshouldが「〜べき」という訳になることはご存知でしょうか?(推量などの意味を持つ場合もありますがやや高度な文法なので省略させていただきます。)また、should のような助動詞の後には動詞の原形が来ることを質問者様もご存知かと思います。では例えば、「2日前にりんごを食べておくべきだった。」というふうに助動詞 should を使わなくてはならないが、その後には動詞の原形しか使えない。どうやって過去のことを表すんだ??というふうになるかと思います。
このようなとき、つまり助動詞を用いながら過去の時制について話すとき、英語では
助動詞+have+動詞の過去分詞形
という形を用います。
よって、今回の問題では、
I should have known better than to call him.という答えになるわけです。
まず1つ目にshould have 過去分詞 が〜すべきだったのに(しなかった)という訳になることを知っているかどうかがこの問題のミソです。
しかし、この問題で最も難しい部分は
know better than to 動詞の原形 という英熟語を知っているかということです。この英熟語の訳としてしばしば言われるのは
〜しない方がいいとわかっている
〜するほどバカではない
というようなかんじです。
たしかにknowなどから雰囲気やニュアンスを感じることはできるかもしれませんが、これを見て「〜しない方がいいとわかっている」と直感で訳出することはネイティブでない私たちには不可能でしょう。
よって、このようや熟語は一つ一つ覚えていくしかありません。
長くなってしまい失礼いたしました。
高校の勉強は日々多忙で大変だと思いますが、頑張ってください。