1. ๋ฌธ์ ์ค๋ช
- ์ ๋ ฅ : 5, [2, 1, 2, 6, 2, 4, 3, 3]
- ์ถ๋ ฅ : [3,4,2,1,5] ์คํจ์จ์ด ๋์ ์คํ ์ด์ง์์ผ๋ก ์ถ๋ ฅ
2. ์ฝ๋
solution1.py
import re
db = {'S':'**1', 'D':'**2','T':'**3','#':'*-1'}
def solution(dartResult):
answer =''
#dartResult์์ '[SDT][*#]?'์ด๋ฐ ํจํด์ ์ฐพ์ผ๋ฉด '\g<1> ' ๋ฐ๊ฟ์ฃผ๊ฒ ๋ค.
# -> ํ ์ ์๋ง๋ค ๊ทธ๋ฃนํํด์ ๊ณต๋ฐฑ์ ๋ถ์ฌ์ค
for i in re.sub('([SDT][*#]?)', '\g<1> ',dartResult).split():
#'*'์ฒ๋ฆฌ
if i[-1] == '*': #ํ์ฌ ์ ์์ ๋ง์ง๋ง์ *์ด ์๋ค๋ฉด
if answer: #์ด์ ์ ์๊ฐ ์๋์ง ํ์ธ
answer = answer[:-1] + '*2+' #์ด์ ์ ์์ ๋ง์ง๋ง ๋ถํธ์ธ +๋ฅผ ๋นผ๊ณ *2+๋ก ๋์ฒด
i+='2'#ํ์ฌ ์ ์ ๋ค์๋ ํญ์ 2๋ฅผ ๋ถ์ด๊ธฐ -> *2๊ฐ๋จ
#*๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๋ฌธ์ replace
for j in db.keys():
i = i.replace(j,db[j])
answer+= i + '+'
return eval(answer[:-1]) #๋ง์ง๋ง์ ์๋ + ๊ธฐํธ๋ ์ง์ด์ฑ๋ก eval์ ์ฉํด์ผํจ
3. ํ๊ณ
์ ๊ทํํ์์ ์จ์ผํ๋ค.
S, D, T, #์ ๊ท์น์ด ๊ฐ๋จํ๋, ๋์ ๋๋ฆฌ์ ๋ฃ์ด์ ๊ท์น์ ์ ์ฉํ ์ ์๋๋ก ํ๊ณ
* ๊ฐ์ ๊ฒฝ์ฐ๋ ์ง์ ๊ตฌํํด์ค๋ค.
sub๋ ์ธ๋ฒ์งธ์์์ ๋ฌธ์์ด์์ ์ฒซ๋ฒ์งธ ์์์ ๊ฐ์ ํจํด์ ๋ฐ๊ฒฌํ๋ฉด ๋๋ฒ์งธ ์์์ ๋ชจ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด๋ค.
- ์ฌ๊ธฐ์๋ ([SDT][*#]?) ์ ๊ฐ์ ํํ์ ๋ฌธ์์ด์์ \g<1> ์ฒซ๋ฒ์งธ ๊ทธ๋ฃน(๊ดํธ์์ ์ธ์ฌ์๋ ์ ์ฒด, ํ์ฌ ๊ทธ๋ฃน1๋ง ์์) ์ด ์กด์ฌํ๋ฉด ๊ณต๋ฐฑ์ ๋ถ์ฌ์ค๋ค.
- ๋ฌผ์ํ๋ [#]๊ฐ 0๊ฐ ๋๋ 1๊ฐ์ด์ ๋ฑ์ฅํ ๋ ๋ฅผ ๋ํ๋ธ๋ค. SDT๋ ๋ฐ๋์ ๋์ค์ง๋ง \, #์ ํ์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌผ์ํ๊ฐ ํ์ํ๋ค.
split()์ ํตํด ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋ ์ ํ ์ ์์ฉ ์กฐํํ ์ ์๋๋ก ํ๋ค.
ํ ์ ์์ฉ *์ ๋ง๋ฌ์ ๋, ๊ท์น์ ์ ์ฉํ๊ณ , ๋๋จธ์ง ๊ธฐํธ๋ค๋ ๊ท์น์ ์ฉ์ ํ๋ค.
eval์ ์ฌ์ฉํ๋ฉด ๋ฌธ์๋ก๋ ๊ธฐํธ๋ค์ ๊ณ์ฐํด์ค๋ค. ex) eval('2**2') = 4
4. ์ฐธ๊ณ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] H-Index (Python) (0) | 2022.01.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] K๋ฒ์งธ ์ (Python) (0) | 2022.01.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ๋ณํ (Python) (0) | 2022.01.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์์ถ (Python) (0) | 2022.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (Python) (0) | 2022.01.03 |