알고리즘

[CodeWars] Rock Paper Scissors! - 8Kyu

또롱또 2024. 12. 4. 06:33
728x90

https://www.codewars.com/kata/5672a98bdbdd995fad00000f/train/python

 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com

 

 

계속 8 kyu만 나오는거 같긴한데 (제일 쉬운 단계다), 뭐 코드워에서 추천해주는 단계이니 그냥 하나씩 빠르게 할라한다.

이번문제는 2개의 string을 함수에 넣을때, 양측을 비교해서 가위바위보 결과를 알려주는거다.

 

나는 같으면 동점 처리를 먼저하고, player1이 이기는 경우를 if 로 뺀 다음, player2가 이기는 경우를 else로 돌렸다.

 

파이썬에서 or 그리고 and를 쓰는법을 배우게 되었다.

def rps(p1, p2):
   if p1 == p2:
      return "Draw!"
   else:
      if (p1 == "scissors" and p2 == "paper") or (p1 == "paper" and p2 == "rock") or (p1 == "rock" and p2 == "scissors"):
         return "Player 1 won!"
      else:
         return "Player 2 won!"

 

정답코드는 미쳤다고 말할 수 있다.

def rps(p1, p2):
    hand = {'rock':0, 'paper':1, 'scissors':2}
    results = ['Draw!', 'Player 1 won!', 'Player 2 won!']
    return results[hand[p1] - hand[p2]]

각각 가위 바위 보에 점수를 주고, 위 코드처럼 계산을 통해, 인덱스에 있는걸 반환한다.

가위바위보의 성질을 아주 잘 아는 사람이 코딩한듯 하다.

 

참고로 index가 음수가 나오면 뒤에서부터 센다.

a = [1,2,3,4,5]
print(a[-1]) # 5

 

728x90