Programmers/프로그래머스-[1차]다트 게임-python
📖 문제
🎈 풀이
- 3개의 숫자를 저장할 list st를 만들고, while의 조건을 걸어주기 위한 index로 i를 썼다.
- tmp라는 flag를 사용했는데, tmp가 -1이라면 숫자를 넣을 차례인 것이고, 숫자가 나왔다면 tmp에 숫자가 들어갈 것이다.
- i가 dartResult의 길이보다 작을 때까지 반복하도록 하고, 'S','D','T'가 왔을 때 숫자값을 각각 해당되는 만큼 제곱해주었다.
- '*'이나 '#'이 왔을 때는 n번째 숫자가 처리될 것이 없고 종료되었다는 것이므로, 각각 처리를 해주고 st에 append하였다.
- 다음 숫자가 올 때의 경우 예외처리를 하여, 이 때에도 st에 append해주고 숫자를 넣을 차례라고 tmp를 -1로, index i를 1 감소해주었다(밑에서 반복문 종료 시 +1되므로)
- 3번째 숫자를 마지막으로 st에 append해주고 3개의 숫자를 더해 return 하였다.
💻 코드
💊 탑👍 코드
- 1번째 탑코드는 정규표현식을 잘 사용하였다.
- (\d+)([SDT])([*#]?) 이렇게 사용했는데 각각 뜻은 아래와 같다
- (\d+) : () : 정규식 그룹, \d : 숫자를 의미하는 기호, + : 앞 패턴이 하나 이상
- ([SDT]) : [] : 대괄호 안 문자들 중 하나여야 함, SDT : S,D,T 3개 중 1개
- ([*#]?) : *,# 중에 한개여야 함, ? : 앞 패턴이 없거나 하나
- 그것 이외에도 반복문을 깔끔하게 잘 활용한 것 같다.
- 2번째 탑코드는 정규식 없이 정말 쉽게 처리했다....👍
- 10을 처리하는 게 관건이었는데, 처음에 10을 바꿔서 저장할 때 10으로 저장하므로 해결해버렸다.
- 개인적으로는 정규식을 쓰지 않기 때문에 가독성은 더 좋다고 보인다..
✨ 실행 결과
💡 문제 출처
프로그래머스