Programmers/프로그래머스-[1차]다트 게임-python

Ne5s·2022년 8월 30일
0

알고리즘 문제풀기

목록 보기
23/31
post-thumbnail
post-custom-banner

📖 문제

🎈 풀이

  • 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으로 저장하므로 해결해버렸다.
  • 개인적으로는 정규식을 쓰지 않기 때문에 가독성은 더 좋다고 보인다..

✨ 실행 결과

💡 문제 출처

프로그래머스

profile
초보개발자
post-custom-banner

0개의 댓글