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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

18년 (시험은 17년에 이루어졌을 겁니다.) kakao 문제였다고 합니다.

 

입력을 적당히 잘 쪼개고 예외를 조심하면서 문제에 주어진 대로 구현하면 풀리는 문제입니다.

다트가 3개이기 때문에 저는 다트의 인덱스 idx와 입력의 인덱스 i를 다르게 관리해줬습니다. 또 점수가 10인 경우를 주의해야 합니다.

 

def solution(dartResult):
    answer = [0, 0, 0]

    idx = -1
    i = 0

    while i < len(dartResult):
        
        if dartResult[i] in ["S", "D", "T"]:
            if dartResult[i] == "D":
                answer[idx] *= answer[idx]
            elif dartResult[i] == "T":
                answer[idx] = answer[idx] * answer[idx] * answer[idx]
        
        elif dartResult[i] == "*":
            answer[idx] *= 2
            if idx - 1 >= 0:
                answer[idx - 1] *= 2
        
        elif dartResult[i] == "#":
            answer[idx] *= -1
        
        else:
            idx += 1
            if dartResult[i] == "1" and i < len(dartResult) - 1 and dartResult[i + 1] == "0":
                answer[idx] = 10
                i += 1
            else :
                answer[idx] = int(dartResult[i])
        
        i += 1

    return sum(answer)
728x90

+ Recent posts