ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ์กฐ์ด์คํฑ
dirmathfl 2020. 10. 23. 23:55๋ฌธ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์กฐ์ด์คํฑ
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ์ธ์. ๋งจ ์ฒ์์ A๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ex) ์์ฑํด์ผ ํ๋ ์ด๋ฆ์ด ์ธ ๊ธ์๋ฉด AAA, ๋ค ๊ธ์๋ฉด AAAA ์กฐ์ด์คํฑ์ ๊ฐ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค. โฒ - ๋ค
programmers.co.kr
๋ฌธ์ ํ์ด
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ๊ณ ์ ํ๋ค. ์ด๋ ์กฐ์ด์คํฑ์ ์์ง์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค.
- โฒ - ๋ค์ ์ํ๋ฒณ
- โผ - ์ด์ ์ํ๋ฒณ
- (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
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ (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 |