티스토리 뷰

알고리즘/level 1

다트게임 - javascript

민트초코수장 2021. 1. 6. 23:48

1. 문제

 

 

 


2. 문제 풀이

위에서 보다시피 다트는 3번의 기회가 있고 0~10점까지 있습니다.

Single, Double, Triple 영역이 존재하고 *와 #이 존재합니다.

Single 1제곱
Double 2제곱
Triple 3제곱
* 바로 전 점수와 해당 점수 각각 2배
# 해당 점수 마이너스

총 점수를 반환하면 되는 문제입니다. 여기서 관건은 10점을 어떻게 하는가.. 그리고 *과 #인 것 같습니다.


3. 풀이 방법

일단 score가 10점이 나왔을 경우를 if문으로 빼서 구하고 점수와 S,D,T를 합쳐서 꺼내어 점수를 냅니다.

그리고 *과 #이 나왔을 경우 그에 맞는 계산을 한 후에 빈 배열에 하나씩 넣어준 후 모든 점수를 합쳐주었습니다.

 

 


4. 전체적인 코드

 

1. 문자열을 배열처럼 사용할 수 있다는 것을 이용해 지금 위치의 다음에 0이 나오면 score를 10으로 지정

2. 아닌 경우에 현재 위치의 숫자를 정수로 저장하였습니다.

3. 저장한 score를 D나 T에 맞게 제곱해줍니다. S은 1제곱이기 때문에 따로 해주지 않았습니다.

4. 만약 현재 위치의 2번째에 *이 있는 경우 점수가 저장되어있는 배열의 맨 뒤에 있는 값과 자신의 score를 2배합니다.

5. #인 경우에는 score에 -1를 곱해줍니다.

6. score를 저장하는 배열에 저장한 후

7. reduce 함수를 이용해 모든 점수를 더하여 return합니다!

 

 

 

 


로직을 빨리 이해한다면 생각보다는 쉬운 문제였습니다!

 

 

 

programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

반응형

'알고리즘 > level 1' 카테고리의 다른 글

실패율 - javascript  (0) 2021.01.07
비밀지도 - javascript  (0) 2021.01.06
완주하지 못한 선수  (0) 2020.12.23
최대공약수와 최소공배수  (0) 2020.12.23
문자열 내 p와 y의 개수  (0) 2020.12.11
Comments