ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ์กฐ์ด์คํฑ
dirmathfl 2020. 10. 23. 23:55728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ๊ณ ์ ํ๋ค. ์ด๋ ์กฐ์ด์คํฑ์ ์์ง์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค.
- โฒ - ๋ค์ ์ํ๋ฒณ
- โผ - ์ด์ ์ํ๋ฒณ
- (A์์ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด Z๋ก)
- โ - ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋
- (์ฒซ ๋ฒ์งธ ์์น์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ๋ฌธ์์ ์ปค์)
- โถ - ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ๊ฐ ์ํ๋ฒณ์ด A์์ ์ด๋ํ๋ ๊ฒ์ด ๋น ๋ฅธ์ง, Z์์ ์ด๋ํ๋ ๊ฒ์ด ๋น ๋ฅธ์ง์ ๋ฐ๋ผ ์ด๊ธฐ์ ์กฐ์ด์คํฑ์ ์ด๋ํด์ผ ํ๋ ํ์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฌธ์๋ `A`๋ก ์์ํ๋ฏ๋ก `dist`์ ํฉ์ด 0์ธ ๊ฒฝ์ฐ๋ ์กฐ์ด์คํฑ์ ์์ง์ผ ํ์๊ฐ ์๋ค. ์ด์ธ์๋ ํ์ฌ ๋ฌธ์์ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ์ค ๋ ๋นจ๋ฆฌ ์กฐ์ํ ์ ์๋ ๊ฒ์ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋ฌธ์ ์์ ๊ตฌํ๊ณ ์ ํ๋ ๋ต์ ์ฐพ์ ์ ์๋ค.
์ฝ๋
def solution(name):
dist = [min(ord(s) - ord("A"), ord("Z") - ord(s) + 1) for s in name]
idx, answer = 0, 0
while True:
answer += dist[idx]
dist[idx] = 0
if sum(dist) == 0:
break
left, right = 1, 1
while not dist[idx - left]:
left += 1
while not dist[idx + right]:
right += 1
if left >= right:
idx += right
answer += right
else:
idx -= left
answer += left
return answer
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ (0) | 2020.10.25 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋๋์ง (0) | 2020.10.24 |
ํ๋ก๊ทธ๋๋จธ์ค: ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2020.10.23 |
ํ๋ก๊ทธ๋๋จธ์ค: SQL - IS NULL (0) | 2020.10.21 |
ํ๋ก๊ทธ๋๋จธ์ค: SQL - SUM, MAX, MIN (0) | 2020.10.21 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ