알고리즘 44 - Rock Paper Scissors!

jabae·2021년 10월 28일
0

알고리즘

목록 보기
44/97

Q.

Rock Paper Scissors

Let's play! You have to return which player won! In case of a draw return Draw!.

Examples:

rps('scissors','paper') // Player 1 won!
rps('scissors','rock') // Player 2 won!
rps('paper','paper') // Draw!

A)

const rps = (p1, p2) => {
  if (p1 === p2) {
    return "Draw!";
  }
  else if (p1 === 'rock') {
    if (p2 === 'scissors')
      return "Player 1 won!";
    else 
      return "Player 2 won!";
  }
  else if (p1 === 'scissors') {
    if (p2 === 'paper')
      return "Player 1 won!";
    else
      return "Player 2 won!";
  }
  else {
        if (p2 === 'rock')
      return "Player 1 won!";
    else
      return "Player 2 won!";
  }
};

other

다른 솔루션들을 보니까 내가 얼마나 정직하게 풀었는지 알게 되었다... 🤦‍♀️🥲
if 문으로도 더 짧게 둘일 수도 있고,

const rps = (p1, p2) => {
  if (p1 == p2)
    return 'Draw!';
    
   if (p1 == 'rock' && p2 == 'scissors') 
     return 'Player 1 won!'
   else if (p1 == 'scissors' && p2 == 'paper') 
     return 'Player 1 won!'
   else if (p1 == 'paper' && p2 == 'rock') 
     return 'Player 1 won!'
   else
     return 'Player 2 won!';
};

rules 객체로 key를 p1으로, value를 p2로 생각하고 p1이 이기는 경우만 객체로 담아서 이 경우에만 return "Player 1 won!"을 반환한 것이다! 와 신기해 객체로 풀 생각을 하다니....!😮

const rps = (p1, p2) => {
  if (p1 === p2) return "Draw!";
  
  var rules = {rock: "scissors", paper: "rock", scissors: "paper"};
  if (p2 === rules[p1])
    return "Player 1 won!";
  else 
    return "Player 2 won!";
};
profile
it's me!:)

0개의 댓글