본문 바로가기
알고리즘

[프로그래머스 - [1차] 다트 게임][파이썬] -6일차

by Jyujae 2022. 5. 31.

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

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

programmers.co.kr

--풀이

완전 탐색 문제, key point: '*'을 처리하는 방법, S,D,T 처리 방법

 

1. S, D, T 처리 로직

S,D,T는 숫자 뒤에 나오기 때문에, if 숫자면 더해줬던 n을 1제곱, 2제곱, 3제곱해주면 된다

n=''을 사용한 이유: 문자열과 숫자를 다르게 생각해줘야하는데, 앞에 있는 숫자를 다루기 편하라고, 문자와 가장 가까운 인덱스에 있는 숫자를 담아 둔 것이다

-> 그래서 처리 후에는 n=''로 초기화 해줘야함

 

2. '*' 처리 방법

먼저 *이 처음에 올수도 있다는 조건을 봤을 때, 인덱스로 접근하려고 해서 고생했다.

인덱스 번호가 아니라 len으로 접근해서 len(score)>1 로 설정하여 최소한 숫자 2개가 있는지, 아니면 앞에 오는지를 구별해주었다.

+ #이 *에도 적용된다는 말 -> 즉 -1이 2배가 될 수 있다는 말은 헷갈리게 하려는 fake 였던 것 같다

*과 #은 그저 x 2, x -1로 치환해서 생각하면 조금 더 쉽게 풀 수 있었을 것 같다

 

완전 탐색 문제가 나오면 당황하지 않고 조건 하나하나씩을 비교해보자

개인적인 생각으로는 for문은 간결하게, if 문으로 조건을 구별해주고, n과 같이 변수를 잘 설정, 초기화 해보자