[프로그래머스] 다트게임

개발잘하기프로젝트·2020년 11월 1일
0
post-thumbnail

🤔 문제

2018 KAKAO BLIND RECRUITMENT, 1차

카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.
갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다.

  1. 3번의 기회가 주어짐
  2. Score
    획득 가능한 점수: 0 ~ 10점
  3. Bonus
    Single(S): 점수에서 1제곱
    Double(D): 점수에서 2제곱
    Triple(T): 점수에서 3제곱
  4. Option
    스타상(*): 해당 점수와 바로 전에 얻은 점수를 각각 2배
    아차상(#): 해당 점수만 감점(-)
  5. 스타상은 첫 번째 기회에서도 나올 수 있고, 이때는 첫번째 스타상의 점수만 2배
  6. 스타상의 효과는 다른 스타상의 효과와 중첩가능, 중첩된 스타상의 점수는 4배
  7. 스타상과 아차상의 효과는 중첩가능, 중첩된 아차상의 점수는 -2배
  8. S, D, T는 점수마다 하나씩 존재
  9. 스타상, 아차상은 점수마다 둘 중 하나씩 존재 혹은 둘다 없을 수 있음
  10. 결과: 점수|보너스|[옵션] 으로 이루어진 문자열 3세트로 구성

3번의 기회에서 얻은 점수 합계에 해당하는 정수값을 출력한다.

💡 접근

  1. 정규표현식
  2. score, bonus, option, bonusObj, optionObj
  3. 점수 계산

🧑🏻‍💻 코드

정규표현식을 사용하지 않고 문제를 풀면서 dartResult를 score, bonus, option으로 나누어 비교하는데 있어서 생각해야할 조건이 많아지고 복잡하여 채점과정에서 계속 실패가 발생했다. 간단한 정규표현식이라도 최소한의 공부는 필요하다고 많이 느끼고 정규표현식에 관한 자료를 찾아보았다.

정규표현식을 통해 문자열을 구분해주니 생각보다 순조롭게 문제 풀이가 진행되었다.
먼저 score, bonus, option 배열을 선언해주고 bonusObj, optionObj 객체를 만들어주었다.

이후로는 for문과 if문으로 해결하였다.

📝 참고

모던 JavaScript 튜토리얼 - 정규표현식

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글

관련 채용 정보