-
[TIL] Today I Learned : 수학표현식, 논리연산자, 가위 바위 보 게임 함수 만들기(rockPaperScissors 함수)프론트엔드 개발자가 될거야./js 2022. 6. 23. 15:25
공부하다가 헷갈리는 개념들이 있어서 정리해보려고 한다.
간단하지만 헷갈리는......
컴퓨터 언어에서 사용되는 수학 표현식
let num = 1; num++; console.log(num); // 2
num++는 풀어서 쓰면
num = num + 1; 이다.
let num = 1; let newNum = num++; console.log(num); // 2 console.log(newNum); // 1
잠시 여기서 의문!
num도 2고 newNum도 2 일 줄 알았는데.....
왜 저런 답이 나왔을까?
let newNum = num++;을 풀어서 써보면
let newNum = num = num + 1 이다.
newNum = num ---> newNum = 1 이고
그 다음에 num + 1 을 해주어서 num은 2가 된 것이다.
논리연산자
또는에 해당하는 논리연산자 ||
그리고에 해당하는 논리연산자 &&
헷갈릴 수 있는 예시를 가져왔다.
if (age > 65 || age < 21 && res === "한국")
컴퓨터 언어는 왼쪽부터 해석하기 때문에 왼쪽부터 해석해야한다.
즉, 위의 예시는 || 기준으로 나누어서 해석해야한다.
'65가 넘거나 / 21보다 어리고 한국에 산다. ' 이렇게!
이런 해석이라면 아래와 같은 경우 참이다. (예)
- 66세이다.
- 20이면서 한국에 산다
'65가 넘거나 21보다 아래이고 / 한국에 산다.' 이렇게 해석하면 안된다!
이런 해석이라면 아래와 같은 경우 참이다.(예)
- 66세 한국에 산다.
- 20세 한국에 산다.
코드를 가독성 있게 바꾼다면
if (age > 65 || (age < 21 && res === "한국"))
이렇게 해주어야 한다.
👀 문제 👀
가위 바위 보 게임 함수를 아래 조건에 맞게 구현해주세요.
- rockPaperScissors 함수를 구현해서 가위 바위 보 게임을 구현해주세요.
- 가능하면 || 와 && 연산자 둘다 사용해주세요.
- player1과 player2 중 이긴 사람이 누군지 리턴해주세요.
- 예를 들어, player1이 이겼으면 "player1" 이 리턴 되고
그 반대의 경우라면 "player2"가 리턴이 되어야 합니다.
- 만일 비기는 경우에는 무조건 "player1"이 리턴 되어야 합니다.
- player1 과 player2 의 값은 다음 셋 중 하나 입니다.
"가위" "바위" "보"
- 예를 들어, player1은 "가위" 이고 player2는 "보" 이면
"player1" 이 리턴 되어야 합니다.처음에 문제 자체를 이해못했다..😂
그러니까
player1과 player2 중 이긴 사람이 누군지 리턴해줘야하는데
player1이 이겼으면 "player1" 이 리턴,
player2가 이겼으면 "player2" 이 리턴,
player1 과 player2가 비겼으면 "player1"이 리턴
즉,
console.log(rockPaperScissors("가위", "보")); //player1
console.log(rockPaperScissors("가위", "바위")); //player2
console.log(rockPaperScissors("가위", "가위")); //player1이렇게 이해하고 문제를 풀면 된다.
💖 정답 💖
function rockPaperScissors(player1, player2) { if ( // 무승부일 때 -> 리턴 player1 (player1 === "가위" && player2 === "가위") || (player1 === "바위" && player2 === "바위") || (player1 === "보" && player2 === "보") ) { return "player1"; } else if ( // player1이 이겼을 때 -> 리턴 player1 (player1 === "가위" && player2 === "보") || (player1 === "바위" && player2 === "가위") || (player1 === "보" && player2 === "바위") ) { return "player1"; } else if ( // player2가 이겼을 때 -> 리턴 player2 (player1 === "가위" && player2 === "바위") || (player1 === "바위" && player2 === "보") || (player1 === "보" && player2 === "가위") ) { return "player2" } } console.log(rockPaperScissors("가위", "보")); //player1 console.log(rockPaperScissors("가위", "바위")); //player2 console.log(rockPaperScissors("가위", "가위")); //player1
와앙.. 머리 터져어 🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯
'프론트엔드 개발자가 될거야. > js' 카테고리의 다른 글
[TIL] Today I Learned : Srting - sliceCityFromAddress함수 (0) 2022.06.23 [TIL] Today I Learned : 배열 요소 추가, 제거 - divideArrayInHalf 함수 (0) 2022.06.23 [TIL] Today I Learned : for문 - findSmallestElement 함수 (0) 2022.06.22 [노마드 코더] 바닐라 JS로 크롬 앱 만들기 (0) 2022.06.19 JS함수 정리 - 화살표함수, 즉시실행함수, 호이스팅, 타이머함수, 콜백 (0) 2022.06.14