가위바위보 문제

MIN KYOUNG KIM·2022년 2월 20일
0

js replit 문제를 풀다가 난관(?)에 부딪쳤다.
무의식적으로 문제가 어렵다고 생각한건지, 아니면 난독증이 오신건지
문제를 읽다가, 문제를 이해하지 못해서 혼자 멘붕이 와버렸다.
프리코스 자바스크립트 시험 쳤을때도, 문제 그대로 보긴 보단, 간단한 문제를 자꾸 어렵게 생각하는 경향이 있었다.
오답노트 정리하다가 반성의 시간!

이전에 같이 일하셨던 분이 내 코딩 짜는 모습을 보고 했던 말이 생각했다.

"한번에 너무 많은 경우의 수를 생각하니, 문제를 접근 못하시는 것 같아요.(ㅜㅜ코딩 한줄 쓰지 못해서...좌절중이엇음)
먼저, 간단하게 생각하기. 그리고 조건에 맞는 코딩을 단계별로 적어주면 좋을듯해요!"

Assignment
index.js에 있는 가위 바위 보 게임 함수를 아래 조건에 맞게 구현해주세요.
rockPaperScissors 함수를 구현해서 가위 바위 보 게임을 구현해주세요.
가능하면 || 와 && 연산자 둘다 사용해주세요.
player1과 player2 중 이긴 사람이 누군지 리턴해주세요.
예를 들어, player1이 이겼으면 "player1" 이 리턴 되고 그 반대의 경우라면 "player2"가 리턴이 되어야 합니다.
만일 비기는 경우에는 무조건 "player1"이 리턴 되어야 합니다.
player1 과 player2 의 값은 다음 셋 중 하나 입니다.
"가위"
"바위"
"보"
예를 들어, player1은 "가위" 이고 player2는 "보" 이면 "player1" 이 리턴 되어야 합니다.


Assignment - 다음 함수 안에 코드를 구현하세요
function rockPaperScissors(player1, player2) {
//  예시:
  // if ( (player1 === "가위" && player2 === "보" ) || (player1 === "가위" && player2 === "가위") ) {
  //     result = "player1";
    
}
module.exports = {rockPaperScissors};력하세요

문제를 읽고, 아래의 예시를 읽는데, 순간 예시가 이해가 안 가서 당황했다.
지금 생각해보면, 나는 true/false에 꽂혀있었고... 말도 안되게 문제를 이해하게 되는 상황이 되었다.
player1 === 가위이면 true, player2 === '보'... 그러다가 만약 player2가 "보"가 아니면 false로 찍히는건가? 그럼 뭘 비교하는거지??

근데 오늘 평온한 마음 장착시키고 연산자 설명을 다시 읽었다. 그제서야 문제가 제대로 보이기 시작. 바로 해결됨 ... 와....

// Assignment - 다음 함수 안에 코드를 구현하세요
function rockPaperScissors(player1, player2) {
  let result;
  if(
    (player1 === "가위" && player2 === '보') || 
    (player1 === '가위' && player2 === '가위') || 
    (player1 === '바위' && player2 === "가위") || 
    (player1 === "바위" && player2 === "바위") ||
    (player1 === "보" && player2 === "바위") ||
    (player1 === "보" && player2 === "보")
    ){
    result = 'player1';
  } 

  if(
    (player1 === "보" && player2 === '가위') || 
    (player1 === "가위" && player2 === '바위') || 
    (player1 === "바위" && player2 === '보')
  ){
    result = 'player2'
  }

  return result;
}

rockPaperScissors('가위','바위')

// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = {rockPaperScissors};

클린 코드인지는 모르겠지만 일단 테스트 돌렸을때 다 초록불 뜸!
내가 생각한 방법은 일단 result 변수를 선언하고 대신 값은 할당하지 않았다. 그 이유는 승패여부에 따라 player가 달라지기 때문!
먼저 if 조건식을 사용했다. Player1이 이길 수 있는 경우의 수를 다 적었다. 조건에 비길경우는 player1를 반환하라고 했기 때문에, 같은 경우도 함께 넣어줬다. 그리고 result = "player1"을 할당했다. 마찬가지로 player2도 이길 수 있는 조건식을 넣어주고, 변수result에 player2를 할당.

그래도 혼자 잘 풀어내서 행벅!

profile
sin prisa pero sin pausa

0개의 댓글