728x90
반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/17682
2. 접근 방식
- S, D, T, *, #을 공백을 포함하여 replace 후 공백으로 split 해주면 서로 분리됨(마지막 공백은 제거)
- 각 기호에 맞는 점수를 제곱해서 정수로 변경해줌
- *은 현재와 이전 값에 *2 (해당 범위에 * 이나 다른 기호가 포함될 경우도 고려해서 미리 정수로 변경해줌)
- #은 0으로 변경 후 현재 값에 -1
- 정수로 변환된 전체 리스트를 합쳐줌 -> 총점
3. 코드
def solution(s):
for str_tmp in ["S", "D", "T", "*", "#"]:
s = s.replace(str_tmp, str_tmp + " ")
res = [x for x in s.split(" ")][:-1]
for i in range(len(res)):
x = res[i]
if x == "*" or x == "#":
continue
if "S" in x:
res[i] = int(x.replace("S", ""))
if "D" in x:
res[i] = pow(int(x.replace("D", "")), 2)
if "T" in x:
res[i] = pow(int(x.replace("T", "")), 3)
for i in range(len(res)):
if res[i] == "*":
res[i] = 0
res[i-1] *= 2
if i-2 >= 0:
if res[i-2] != 0:
res[i-2] *= 2
else:
res[i-3] *= 2
if res[i] == "#":
res[i] = 0
res[i-1] *= -1
return sum(res)
4. 결과
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Lv.2][Python] 카펫 (0) | 2022.10.01 |
---|---|
[프로그래머스][Lv.2][Python] 올바른 괄호 (0) | 2022.10.01 |
[프로그래머스][Lv.2][Python] H-Index (0) | 2022.10.01 |
[프로그래머스][Lv.1][Python] 3진법 뒤집기 (0) | 2022.09.20 |
[프로그래머스][Lv.1][Python] 최대공약수와 최소공배수 (0) | 2022.09.20 |
[프로그래머스][SQL] 고득점 kit (0) | 2022.03.05 |
댓글