๐ธ ๋ฌธ์ ์ ๊ทผ๋ฐฉ์
- 'A' ๋ฌธ์๊ฐ ์๋ ๊ณณ์ผ๋ก ์ด๋ํ๊ธฐ๊น์ง ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์ด๋ ํ์๋ฅผ ๊ณ์ฐ ํ ์ต์๊ฐ์ ๋ํ๋ค.
- ์ผ์ชฝ or ์ค๋ฅธ์ชฝ ์ด๋ ํ, ๋ฌธ์ ์์ฑ์ ์ํด 'A'์์๋ถํฐ ๋ฌธ์๊น์ง, 'Z'์์๋ถํฐ ๋ฌธ์๊น์ง ํ์๋ฅผ ๊ณ์ฐ ํ ์ต์๊ฐ์ ๋ํ๋ค.
- ๋ชจ๋ ์์น๋ฅผ ๋ค ๋ฐฉ๋ฌธํ์ฌ ๋ฌธ์์ด์ ์์ฑ ์ ์ข
๋ฃํ๋ค.
- ํ์ด์ฌ์์ ๋ฆฌ์คํธ๋ ์์๋ก๋ indexing์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ด๋ฐ ์ค๊ฐ ์ง์ ์์๋ถํฐ ๊ณ์ฐํ๋ ๊ฒ์ด ์๋ ์ฃผ์ด์ง ์กฐ๊ฑด 'A'๋ถํฐ ํน์ ๋ค์์ 'Z'๋ถํฐ ๊ณ์ฐํ ๊ฒ
๐ง Source Code
def solution(name):
''' Programmers ์กฐ์ด์คํฑ ๋ฌธ์ ํ์ด - Greedy
Notes:
1. 'A' ๋ฌธ์๊ฐ ์๋ ๊ณณ์ผ๋ก ์ด๋ํ๊ธฐ๊น์ง ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์ด๋ ํ์๋ฅผ ๊ณ์ฐ ํ ์ต์๊ฐ์ ๋ํ๋ค.
2. ์ผ์ชฝ or ์ค๋ฅธ์ชฝ ์ด๋ ํ, ๋ฌธ์ ์์ฑ์ ์ํด 'A'์์๋ถํฐ ๋ฌธ์๊น์ง, 'Z'์์๋ถํฐ ๋ฌธ์๊น์ง ํ์๋ฅผ ๊ณ์ฐ ํ ์ต์๊ฐ์ ๋ํ๋ค.
3. ๋ชจ๋ ์์น๋ฅผ ๋ค ๋ฐฉ๋ฌธํ์ฌ ๋ฌธ์์ด์ ์์ฑ ์ ์ข
๋ฃํ๋ค.
- ํ์ด์ฌ์์ ๋ฆฌ์คํธ๋ ์์๋ก๋ indexing์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ด๋ฐ ์ค๊ฐ ์ง์ ์์๋ถํฐ ๊ณ์ฐํ๋ ๊ฒ์ด ์๋ ์ฃผ์ด์ง ์กฐ๊ฑด 'A'๋ถํฐ ํน์ ๋ค์์ 'Z'๋ถํฐ ๊ณ์ฐํ ๊ฒ
Args:
name (str) : ์์ฑํ ๋ฌธ์์ด
Returns:
answer (int) : ์กฐ์ด์คํฑ ์ด๋ํ์
'''
idx, answer = 0
name_cnt = [min(ord(i)-ord('A'), 1+ord('Z')-ord(i)) for i in name]
while True:
answer += name_cnt[idx]
name_cnt[idx] = 0
left, right = 1,1
if sum(name_cnt) == 0:
break
if name_cnt[idx] == 0:
while name_cnt[idx-left] != 0:
left += 1
while name_cnt[idx+right] != 0:
right += 1
answer += left if left < right else left
idx += -left if left < right else right
return answer
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๊ตฌ๋ช ๋ณดํธ (Greedy) (0) | 2021.06.23 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ํฐ ์ ๋ง๋ค๊ธฐ(Greedy) (0) | 2021.06.22 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฒด์ก๋ณต (Greedy) (0) | 2021.06.20 |
ํ๋ก๊ทธ๋๋จธ์ค - H-index (0) | 2021.06.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ํฐ ์ (์ ๋ ฌ) (3) | 2021.06.16 |