알고리즘
[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