https://school.programmers.co.kr/learn/courses/30/lessons/42860
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
1. ์ํ์ด๋ ๋ํ๊ธฐ (A-Z)
- ์์คํค์ฝ๋๋ฅผ ์ด์ฉํด ์์์๋ถํฐ ๋ํ ๊ฒ๊ณผ ๋ค์์๋ถํฐ ๋ํ ๊ฒ ์ค ์ต์๊ฐ์ ์ฐพ์์ค๋ค.
2. ์ข์ฐ์ด๋์ ์ต์ ๊ตฌํ๊ธฐ
1) 'A'๊ฐ ์ฐ์ํด์ ๋์ค๋ ์์น๋ฅผ ์ฐพ์์ค๋ค.
- temp ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ์ฐ์๋ ์ธ๋ฑ์ค๋ค์ ๋ฆฌ์คํธ๋ก ๋ฌถ์ด์ ๋ฃ์ด์คฌ๋ค.
2) ๊ธฐ์กด ๋ฐฉ์(์์ผ๋ก ์ญ ๊ฐ๊ธฐ) / ์์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค๋ก ๋์๊ฐ๊ธฐ / ๋ค๋ก ๊ฐ๋ค๊ฐ ์์ผ๋ก ๋์๊ฐ๊ธฐ ์ค ์ต์๊ฐ
- ๊ธฐ์กด ๋ฐฉ์(์์ผ๋ก ์ญ ๊ฐ๊ธฐ): len(name) - 1
- ์์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค๋ก ๋์๊ฐ๊ธฐ: ('A'๊ฐ ์ฒ์ ๋์ค๋ ๊ณณ ์์ ์ํ๋ฒณ ๊ฐ์ - 1) * 2 + 'A'๊ฐ ๋ง์ง๋ง์ผ๋ก ๋์ค๋ ๊ณณ ๋ค์ ์ํ๋ฒณ ๊ฐ์
- ๋ค๋ก ๊ฐ๋ค๊ฐ ์์ผ๋ก ๋์๊ฐ๊ธฐ: 'A'๊ฐ ๋ง์ง๋ง์ผ๋ก ๋์ค๋ ๊ณณ ๋ค์ ์ํ๋ฒณ ๊ฐ์ * 2 + ('A'๊ฐ ์ฒ์ ๋์ค๋ ๊ณณ ์์ ์ํ๋ฒณ ๊ฐ์ - 1)
3. answer = 1 + 2
# ํ๋ก๊ทธ๋๋จธ์ค 42860: ์กฐ์ด์คํฑ
def solution(name):
answer = 0
for i in name: # ์ํ์ด๋ ๋จผ์ ๋ค ๋ํ๊ธฐ
answer += min(ord(i) - 65, 91 - ord(i))
temp = [] # ์ฐ์๋ A์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
for i in range(1, len(name)):
if name[i] == 'A':
if temp and temp[-1][-1] == i-1:
temp[-1].append(i)
continue
temp.append([i])
res = len(name) - 1 # ๊ธฐ์กด ๋ฐฉ์
for i in temp:
# (๊ธฐ์กด ๋ฐฉ์, ์์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค๋ก ๋์๊ฐ๊ธฐ, ๋ค๋ก ๊ฐ๋ค๊ฐ ์์ผ๋ก ๋์๊ฐ๊ธฐ)์ ์ต์๊ฐ
res = min(res, 2 * (i[0] - 1) + len(name) - 1 - i[-1], 2 * (len(name) - 1 - i[-1]) + i[0] - 1)
return answer + res
์์ธ ์ผ์ด์ค๋ฅผ ์ก๊ธฐ๊ฐ ํ๋ค์๋ ๋ฌธ์ ๋ค.
๋ง๋ ๊ฑฐ ๊ฐ์๋ฐ ์๊พธ ์คํจํด์ ์ง๋ฌธํ๊ธฐ๋ฅผ ๋ค์ ธ์ ํ ์คํธ์ผ์ด์ค๋ค์ ๋ชจ์กฐ๋ฆฌ ๋ฃ์ด๋ณด๊ณ ์์ ํ๋ฉด์ ์ฑ๊ณตํ๋ค..
'๐ค > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๊ฐ์ฅ ํฐ ์ (1) | 2025.04.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค | Lv3] ํผ์ฆ ์กฐ๊ฐ ์ฑ์ฐ๊ธฐ (Python) (0) | 2023.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค | Lv3] ๋ฑ๊ตฃ๊ธธ (Python) (0) | 2023.03.22 |
[ํ๋ก๊ทธ๋๋จธ์ค | Lv2] ๋ฌธ์์ด ์์ถ (Python) - 2020 KAKAO BLIND RECRUITMENT (0) | 2023.03.08 |
[ํ๋ก๊ทธ๋๋จธ์ค | Lv2] ๊ดํธ ๋ณํ (Python) - 2020 KAKAO BLIND RECRUITMENT (0) | 2023.03.07 |