가위바위보 구현 코드들� 보면 케�스 문� 많� 쓰거나 혹� 비슷한 구조� if 문� 중복� 경우가 많습니다.
케�스문� 줄줄� 나오는 것�나 비슷한 구조가 반복�는 것�나 모� "나� 냄새"(
BadSmell )입니다. 조금ì�´ë�¼ë�„ 나ì�œ 냄새가 나면 바로바로 냄새 ì œê±°ë¥¼ 해야 합니다. 예컨대, 반복ë�˜ëŠ” ì¼€ì�´ìŠ¤ë¬¸ì�€ í…Œì�´ë¸” 프로그래ë°�(Table/Data Driven Programming)으로 í•´ê²°í• ìˆ˜ 있습니다.
ê·¸ë¦¬ê³ , ì‚¬ê³ ì�˜ ë�„구들ì�„ ì �ê·¹ì �으로 활용하기 ë°”ëž�니다. 스테ì�´íЏ 다ì�´ì–´ê·¸ëž¨ì�´ë‚˜, 심지어는 x,y 좌표계를 사용하는 것, 혹ì�€ 서브루틴ì�„ 통해 ë¬¸ì œë¥¼ ì†Œë¬¸ì œ(subproblem)로 나누는 것ë�„ 아주 훌ë¥í•œ ì‚¬ê³ ì�˜ ë�„구가 ë�©ë‹ˆë‹¤ -- ë¬¸ì œì�˜ 복잡ë�„를 낮춰주기 때문ì�´ì£ .
예컨대, 다ì�Œê³¼ ê°™ì�€ ì†Œë¬¸ì œê°€ ìžˆê² ì£ :
- í…�스트화ì�¼ë¡œë¶€í„° ìž…ë ¥ìž�료 ì�½ê³ í•´ì„�하기
- 둘 중� 누가 �겼는지 �단하기
- 사람별로 ì�´ê¸´ 횟수, ì§„ 횟수 누ì �하기
- 결과 보여주기
~cpp
GAWI=1
BAWI=2
BO=3
def getWinner(p1,p2):
"""return 1 when p1 wins, 2 when p2 wins, 0 when a tie"""
if p1>=p2:
return p1-p2
else:
return p1-p2+3
여기서 한단계 ë�” ë¦¬íŒ©í† ë§�ì�´ ê°€ëŠ¥í• ê¹Œìš”?
def getWinner(p1,p2):
"""return 1 when p1 wins, 2 when p2 wins, 0 when a tie"""
return (p1+2*p2)%3
>>> getWinner(GAWI,BO)
1
>>> getWinner(BO,GAWI)
2
>>> getWinner(BAWI,GAWI)
1
>>> getWinner(BO,BO)
0
사실ì�€ ì�´ëŸ° 종ì � ìƒ�태로서ì�˜ 프로그램ì�´ 중요한 것ì�´ ì•„ë‹ˆê³ , 어떻게 ì�´ëŸ° 프로그램ì—� ë�„ë‹¬í• ìˆ˜ 있었는지, ê·¸ ì‚¬ê³ ì™€ 프로그래ë°�ì�˜ ê³¼ì •ì�´ 중요합니다.









