본문 바로가기
코딩 테스트/프로그래머스

[프로그래머스 - Python] Lv.1 다트게임

by 오엥?은 2023. 2. 7.
반응형
  • 문제

https://school.programmers.co.kr/learn/courses/30/lessons/17682?language=python3 

 

프로그래머스

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

programmers.co.kr

 

  • 풀이
def solution(dartResult):
    aList = []
    for x in dartResult:
        aList.append(x)

    a1 = []
    for x in range(1, len(aList)):
        if aList[x] == 'S':
            if aList[x - 1] == '0':
                if aList[x - 2] == '1':
                    aList[x - 1] = '10'
                else:
                    aList[x - 1] = '0'
            a1.append(int(aList[x - 1]) ** 1)


        elif aList[x] == 'D':
            if aList[x - 1] == '0':
                if aList[x - 2] == '1':
                    aList[x - 1] = '10'
                else:
                    aList[x - 1] = '0'
            a1.append(int(aList[x - 1]) ** 2)

        elif aList[x] == 'T':
            if aList[x - 1] == '0':
                if aList[x - 2] == '1':
                    aList[x - 1] = '10'
                else:
                    aList[x - 1] = '0'
            a1.append(int(aList[x - 1]) ** 3)

        elif aList[x] == '*':
            if len(a1) >= 2:
                num = a1[-1] * 2
                num2 = a1[-2] * 2
                a1.pop()
                a1.pop()
                a1.append(num2)
                a1.append(num)

            if len(a1) < 2:
                num3 = a1[-1] * 2
                a1.pop()
                a1.append(num3)

        elif aList[x] == '#':
            num4 = a1[-1] * (-1)
            a1.pop()
            a1.append(num4)

    return sum(a1)

왜 시간초과 안 뜨고 정답처리되는진 모르겠지만 중복된 코드 많아서 맘에 안 든다 힝

담에 다시 풀어봐야겠다

반응형