일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Python
- 스프링 프레임워크
- leetcode
- jvm
- 라인플러스
- BFS
- 딥러닝
- C++
- dfs
- 머신러닝
- 모두를 위한 딥러닝
- 백준
- Spring Framework
- 시애틀
- C/C++
- 라인
- 백트래킹
- Java
- DP
- STL
- 프로그래머스
- 벤쿠버
- 릿코드
- 파이썬
- spring
- 스타벅스
- 다이나믹프로그래밍
- binary search
- 프로그래밍언어론
- 알고리즘
- Today
- Total
케이스윔의 개발 블로그
[프로그래머스][문자열처리] 다트게임 본문
문제
세번의 다트 게임을 통해 얻을 수 있는 점수를 계산 하시오. 총 3번의 기회가 있고 점수와 함께 제공되는 보너스와 옵션을 고려해야합니다.
문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17682)
풀이
상당히 문제가 길지만 그 만큼 조건이 많아서 각 조건들을 놓치지 않으면 해결할 수 있는 문제입니다. 처음에 입력이 string으로 들어오는데 3번의 점수로 나누어서 입력을 받을 수 있어야 하고, 보너스 계산은 쉽지만 옵션은 앞 점수까지도 고려해야합니다. 각 단계의 점수를 저장할 배열 num[3]과 스타상과 아차상을 저장할 bonus[3] 배열을 만들었습니다. S, D, T가 들어왔을 때는 각 점수에 바로 계산을 해서 num에 저장하면 되지만 #나 *가 들어왔을 때 바로 num 배열에서 수정을 하면 중첩으로 스타상, 아차상이 적용되는 경우를 처리할 수 없습니다. 3번의 입력을 다 저장한 후에는 result += num[i]*bonus[3] 을 해주면 result가 답이 됩니다. 예제가 설명이 잘 되어있어서 쉽게 풀 수 있었습니다. 만약 다트 던지는 횟수가 제한이 없거나(항상 다르거나) 보너스, 옵션이 좀 더 어렵게 주어지면 당황할 수도 있는 문제인 것 같습니다!
(해설: http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/)
코드
https://github.com/kswim/Algorithm/blob/master/StringManipulation/17682.cpp
'Algorithm' 카테고리의 다른 글
[프로그래머스][카카오] 셔틀버스 (1) | 2018.12.21 |
---|---|
[프로그래머스][카카오] 캐시 (0) | 2018.12.17 |
[백준][BFS] 1039번 교환 (0) | 2018.11.30 |
[백준][이분탐색] 1654번 랜선자르기 (0) | 2018.11.28 |
[백준][이분탐색] 15732번 도토리 숨기기 (2) | 2018.11.27 |