Zach Johnson wins Hyundai Tourn. of Champions by one over Spieth