http://www.programmingbasics.org/ko/beginner/fsm.html