티스토리 뷰
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
최근에 올라온 글
최근에 달린 댓글
TAG
- 카카오2018[1차]
- nodemailer error
- 코딩테스트
- 회원가입
- 백준
- 토마토3차원
- 로그인
- nodejs
- 바이러스 dfs
- 백준 7562 node
- smtp error
- 정규표현식
- tolowercase
- 숫자야구게임
- Express
- 백준 7569 node
- Level 1
- slice
- JavaScript
- AWS
- left join
- sort
- JOIN
- 코드테스트
- GROUP BY
- SQL
- Replace
- 534 error
- Split
- 프로그래머스
- Total
- Today
- Yesterday