코딩테스트

[프로그래머스][KAKAO_BLIND][2021] 신규 아이디 추천

pythaac 2021. 9. 2. 20:23
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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

 

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

 

programmers.co.kr

 

내가 작성한 코드

import re

def solution(dartResult):
    answer = 0
    ops = re.split('\d+', dartResult)[1:]
    score = list(map(int, re.findall('\d+', dartResult)))

    for i, op in enumerate(ops):
        for c in op:
            if c == 'D':
                score[i] **= 2
            elif c == 'T':
                score[i] **= 3
            elif c == '*':
                for j in range(i,(-1 if i != 2 else 0),-1):
                    score[j] *= 2
            elif c == '#':
                score[i] *= -1

    return sum(score)
  • 문자열
    • 숫자 기준으로 split하면 보너스/옵션
    • 2자리 수 이상일 수 있으므로 '\d+' 패턴으로 확인
  • '*'일 때, 바로 앞 스코어까지만 2배 처리
    • 0 -> 0 / 1 -> 0 ,1 / 2 -> 1, 2
    • i를 기준으로 2일 때만 1까지, 나머지는 0까지 -1씩 탐색

 

다른 사람이 작성한 코드

None

 

기억해야할 것

  • 쉬운 문제지만, 조건이 이것저것 많아지면 놓치는 부분이 생긴다