๐ง ๋ฌธ์
๋ฌธ์ :
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ์ธ์. ๋งจ ์ฒ์์ A๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
ex) ์์ฑํด์ผ ํ๋ ์ด๋ฆ์ด ์ธ ๊ธ์๋ฉด AAA, ๋ค ๊ธ์๋ฉด AAAA
โฒ - ๋ค์ ์ํ๋ฒณ
โผ - ์ด์ ์ํ๋ฒณ (A์์ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด Z๋ก)
โ - ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋ (์ฒซ ๋ฒ์งธ ์์น์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ๋ฌธ์์ ์ปค์)
โถ - ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ (๋ง์ง๋ง ์์น์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ปค์)
โ ์ ๊ทผ ๋ฐฉ์
index: 0 1 2 3 4 5 6
name: J B Z Z A A Z
์์ ์์ ๋ฅผ ํตํด ์ค๋ช ํ๊ณ ์ ํ๋ค.
์ด ๋ฌธ์ ์ ํต์ฌ์ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
๋ฌธ์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค.
1๏ธโฃ ์ํ๋ฒณ ์ฐพ๋ ์ต์๊ฐ (โฒ, โผ)
ํ์ฌ ์์น์์ ๋ต์ ํด๋นํ๋ ์ํ๋ฒณ์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ์ ์๋ ์ด ๋ ๊ฐ์ง์ด๋ค.
- โฒ์ผ๋ก ์ด๋
- โผ์ผ๋ก ์ด๋
๋ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ก์ง์ ์์ฑํ๋ค๋ฉด ํด๋น ์ต์๊ฐ์ ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
index๊ฐ 0์ ํด๋นํ ๋, J๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ A์์~J๊น์ง์ ํ์ ๋๋ A->Z๋ก ์ด๋ํ ํ Z~J๊น์ง์ ํ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
updown = Math.min(name.charAt(index) - 'A', 'Z' - name.charAt(index) + 1)
๋ฐ๋ผ์ ์์ ๊ฐ์ด ์ฝ๊ฒ ์ํ๋ฒณ์ ์ฐพ๋ ์ต์๊ฐ์ ๊ตฌํ ์ ์๋ค.
2๏ธโฃ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์ต์๊ฐ (โ, โถ)
์ต์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์ต์๊ฐ์ ์ฐพ๋ ๊ณผ์ ์์ greedy ํ์์ด ์ฌ์ฉ๋๋ค.
๊ฒฝ์ฐ์ ์๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง๋ก ์๊ฐํ ์ ์๋ค.
โ๏ธ 1. ๊ทธ๋ฅ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ

๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํ ์ ์๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
J๋ฅผ ์์์ผ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ ๊ฐ๋ฉด์ ์ํ๋ฒณ์ ์ฐจ๋ก๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ๋ name.length - 1(= 6)๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ฌ๊ธฐ์์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ ์ ์ ๊ณผ์ฐ A๊ฐ ์๋ ๊ณณ๋ ์ฐ๋ฆฌ๊ฐ ์ง๋์ณ์ผ ํ๋๊ฐ์ด๋ค.

์๋ํ๋ฉด ์ด๊ธฐ๊ฐ์ด A๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ A๊ฐ ์ค๋ณต๋์ด ๋์ค๋ ๊ณณ์ ์คํ๋ ค ๊ทธ๋ฅ ์ญ ๊ฐ๋ ๊ฒ๋ณด๋ค ๋์์ ๊ฐ๋ ๊ฒ์ด ๋ ์งง์ ๊ฑฐ๋ฆฌ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
โ๏ธ 2. ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ค๊ฐ ๋์์ ์ผ์ชฝ์ผ๋ก ๊ฐ๊ธฐ

A๊ฐ ๋์ค๋ ๋ถ๋ถ์ ๋ฐ๊พธ์ง ์์๋ ๋๋ค.
๋ฐ๋ผ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ค๊ฐ A๊ฐ ๋์ค๋ ์๊ฐ ์ผ์ชฝ์ผ๋ก ๋์์ ๊ฐ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด๋ ๊ฒ ๊ฐ๋ ๋ฐฉ์์ด ๊ทธ๋ฅ ์ญ ๊ฐ๋ ๋ฐฉ์๋ณด๋ค ์ต์๊ฑฐ๋ฆฌ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.

์ด๋ ๊ตฌํด์ผ ํ index๋ ๋ค์๊ณผ ๊ฐ๋ค.
- x : ์์ ์ผ๋ก๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ฒซ ๋ฒ์งธ๋ก A๊ฐ ๋์ค๋ ์ ๊น์ง์ index = 3
- y : x๋ถํฐ ์์ํด์ A๊ฐ ์๋ ๋ฌธ์๊ฐ ๋์ค๋ index = 6
๊ทธ๋ ๋ค๋ฉด ์ด๋๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
์ค๋ฅธ์ชฝ x๋งํผ ์ด๋
+
์ผ์ชฝ์ผ๋ก x๋งํผ ์ด๋
+
์์ ์์ ๋ค๋ก (length - y)๋งํผ ์ด๋
์ด๋ ๊ฒ ๊ตฌํ๋ค๋ฉด ์ด ์ด๋๊ฑฐ๋ฆฌ๋ 3 + 3 + (7-6) = 7์ด๋ค.
โ๏ธ 3. ์ผ์ชฝ์ผ๋ก ๋์์ ๊ฐ๋ค๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ

์์์ ๋ค๋ฃจ์๋ ๋ฐฉ์์ ๋จผ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ๋ค์์ ๋ค๋ก ๋์์ ๊ฐ๋ ๋ฐฉ์์ด์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐ๋์ ๊ฒฝ์ฐ์ ์๋ ๊ณ ๋ คํด๋ด์ผ ํ๋ค.
๋ฐ๋์ ๊ฒฝ์ฐ์ ์๋ ์ผ์ชฝ์ผ๋ก ๋์๊ฐ ๋ค์ ๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ ๊ฐ๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
์ด๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก index ๋ ๊ฐ๋ฅผ ์ค์ ํ๋ค.
- x : ์์ ์ผ๋ก๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ฒซ ๋ฒ์งธ๋ก A๊ฐ ๋์ค๋ ์ ๊น์ง์ index = 3
- y : x๋ถํฐ ์์ํด์ A๊ฐ ์๋ ๋ฌธ์๊ฐ ๋์ค๋ index = 6
๊ทธ๋ ๋ค๋ฉด ์ด๋๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
๋ค๋ก (length-y)๋งํผ ์ด๋
+
๋ค์์๋ถํฐ ๋ค์ ์์ ์ผ๋ก ์ด๋(=length-y)
+
์์ ์์ ์์ผ๋ก x๊น์ง ์ด๋
์ด๋ ๊ฒ ๊ตฌํ๋ค๋ฉด ์ด ์ด๋๊ฑฐ๋ฆฌ๋ 1 + 1 + 3 = 5์ด๋ค.
์ฆ, ์ด๋ ๊ฒ ์ด๋ํ๋ ๋ฐฉ์์ด ์ต์ ์ด๋๊ฑฐ๋ฆฌ์ด๋ค.
๐ฉ NOTE
์ฆ, ์ฐ๋ฆฌ๊ฐ ๊ตฌํด์ผ ํ๋ ๊ฒ์ ์ต์ ์ X์ ์ธ๋ฑ์ค์ด๋ค.
๊ทธ๋ฌ๋ ์ํ ์์ด ์ต์ ์ x์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ๋ ๊ฒ์ ์ฝ์ง ์๋ค.
("JAZZAZ"์ ๊ฐ์ด A ๋ ๊ฐ ์ฌ์ด์ A๊ฐ ์๋ ์ํ๋ฒณ์ด ๊ปด์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ํ์์ ์๋ํด์ผ ํ๋ค.)
๋ฐ๋ผ์, name์ ์ธ๋ฑ์ค๋ฅผ ์ํํ๋ฉฐ ๋งค๋ฒ x์ y์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฐ์ดํธํด ์ฃผ๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ ๊ฒ์ด๋ค.(Greedy ํ์) ์์ ์์ ์ ๋ฐ๋ฅด๋ฉด for๋ฌธ์ index๊ฐ x์ index์ธ 4๊ฐ ๋์์ ๋ ์ต์๊ฑฐ๋ฆฌ๊ฐ 5๋ก ์ ๋ฐ์ดํธ๋ ๊ฒ์ด๊ณ ์ด๋ฅผ ์ถ๋ ฅํ ์ ์๊ฒ ๋๋ค.
โ ์ฝ๋ ๋ต์ - JAVA
class Solution {
public int solution(String name) {
int answer = 0;
int length = name.length();
int move = length - 1;
int y;
for (int x = 0; x < length; x++){
answer += Math.min(name.charAt(x) - 'A', 'Z' - name.charAt(x) + 1);
y = x + 1;
while (y < length && name.charAt(y) == 'A'){
y ++; // A๊ฐ ๋์ด์ ๋์ค์ง ์๋ index
}
move = Math.min(move, (Math.min(x+x+(length-y), x+(length-y)+(length-y))));
}
return answer + move;
}
}
'CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ง ๋ฌธ์
๋ฌธ์ :
์กฐ์ด์คํฑ์ผ๋ก ์ํ๋ฒณ ์ด๋ฆ์ ์์ฑํ์ธ์. ๋งจ ์ฒ์์ A๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
ex) ์์ฑํด์ผ ํ๋ ์ด๋ฆ์ด ์ธ ๊ธ์๋ฉด AAA, ๋ค ๊ธ์๋ฉด AAAA
โฒ - ๋ค์ ์ํ๋ฒณ
โผ - ์ด์ ์ํ๋ฒณ (A์์ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด Z๋ก)
โ - ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋ (์ฒซ ๋ฒ์งธ ์์น์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ๋ฌธ์์ ์ปค์)
โถ - ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ (๋ง์ง๋ง ์์น์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ปค์)
โ ์ ๊ทผ ๋ฐฉ์
index: 0 1 2 3 4 5 6
name: J B Z Z A A Z
์์ ์์ ๋ฅผ ํตํด ์ค๋ช ํ๊ณ ์ ํ๋ค.
์ด ๋ฌธ์ ์ ํต์ฌ์ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
๋ฌธ์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค.
1๏ธโฃ ์ํ๋ฒณ ์ฐพ๋ ์ต์๊ฐ (โฒ, โผ)
ํ์ฌ ์์น์์ ๋ต์ ํด๋นํ๋ ์ํ๋ฒณ์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ์ ์๋ ์ด ๋ ๊ฐ์ง์ด๋ค.
- โฒ์ผ๋ก ์ด๋
- โผ์ผ๋ก ์ด๋
๋ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ก์ง์ ์์ฑํ๋ค๋ฉด ํด๋น ์ต์๊ฐ์ ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
index๊ฐ 0์ ํด๋นํ ๋, J๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ A์์~J๊น์ง์ ํ์ ๋๋ A->Z๋ก ์ด๋ํ ํ Z~J๊น์ง์ ํ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
updown = Math.min(name.charAt(index) - 'A', 'Z' - name.charAt(index) + 1)
๋ฐ๋ผ์ ์์ ๊ฐ์ด ์ฝ๊ฒ ์ํ๋ฒณ์ ์ฐพ๋ ์ต์๊ฐ์ ๊ตฌํ ์ ์๋ค.
2๏ธโฃ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์ต์๊ฐ (โ, โถ)
์ต์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์ต์๊ฐ์ ์ฐพ๋ ๊ณผ์ ์์ greedy ํ์์ด ์ฌ์ฉ๋๋ค.
๊ฒฝ์ฐ์ ์๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง๋ก ์๊ฐํ ์ ์๋ค.
โ๏ธ 1. ๊ทธ๋ฅ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ

๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํ ์ ์๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
J๋ฅผ ์์์ผ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ ๊ฐ๋ฉด์ ์ํ๋ฒณ์ ์ฐจ๋ก๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ๋ name.length - 1(= 6)๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ฌ๊ธฐ์์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ ์ ์ ๊ณผ์ฐ A๊ฐ ์๋ ๊ณณ๋ ์ฐ๋ฆฌ๊ฐ ์ง๋์ณ์ผ ํ๋๊ฐ์ด๋ค.

์๋ํ๋ฉด ์ด๊ธฐ๊ฐ์ด A๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ A๊ฐ ์ค๋ณต๋์ด ๋์ค๋ ๊ณณ์ ์คํ๋ ค ๊ทธ๋ฅ ์ญ ๊ฐ๋ ๊ฒ๋ณด๋ค ๋์์ ๊ฐ๋ ๊ฒ์ด ๋ ์งง์ ๊ฑฐ๋ฆฌ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
โ๏ธ 2. ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ค๊ฐ ๋์์ ์ผ์ชฝ์ผ๋ก ๊ฐ๊ธฐ

A๊ฐ ๋์ค๋ ๋ถ๋ถ์ ๋ฐ๊พธ์ง ์์๋ ๋๋ค.
๋ฐ๋ผ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ค๊ฐ A๊ฐ ๋์ค๋ ์๊ฐ ์ผ์ชฝ์ผ๋ก ๋์์ ๊ฐ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด๋ ๊ฒ ๊ฐ๋ ๋ฐฉ์์ด ๊ทธ๋ฅ ์ญ ๊ฐ๋ ๋ฐฉ์๋ณด๋ค ์ต์๊ฑฐ๋ฆฌ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.

์ด๋ ๊ตฌํด์ผ ํ index๋ ๋ค์๊ณผ ๊ฐ๋ค.
- x : ์์ ์ผ๋ก๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ฒซ ๋ฒ์งธ๋ก A๊ฐ ๋์ค๋ ์ ๊น์ง์ index = 3
- y : x๋ถํฐ ์์ํด์ A๊ฐ ์๋ ๋ฌธ์๊ฐ ๋์ค๋ index = 6
๊ทธ๋ ๋ค๋ฉด ์ด๋๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
์ค๋ฅธ์ชฝ x๋งํผ ์ด๋
+
์ผ์ชฝ์ผ๋ก x๋งํผ ์ด๋
+
์์ ์์ ๋ค๋ก (length - y)๋งํผ ์ด๋
์ด๋ ๊ฒ ๊ตฌํ๋ค๋ฉด ์ด ์ด๋๊ฑฐ๋ฆฌ๋ 3 + 3 + (7-6) = 7์ด๋ค.
โ๏ธ 3. ์ผ์ชฝ์ผ๋ก ๋์์ ๊ฐ๋ค๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ

์์์ ๋ค๋ฃจ์๋ ๋ฐฉ์์ ๋จผ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ๋ค์์ ๋ค๋ก ๋์์ ๊ฐ๋ ๋ฐฉ์์ด์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐ๋์ ๊ฒฝ์ฐ์ ์๋ ๊ณ ๋ คํด๋ด์ผ ํ๋ค.
๋ฐ๋์ ๊ฒฝ์ฐ์ ์๋ ์ผ์ชฝ์ผ๋ก ๋์๊ฐ ๋ค์ ๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ญ ๊ฐ๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
์ด๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก index ๋ ๊ฐ๋ฅผ ์ค์ ํ๋ค.
- x : ์์ ์ผ๋ก๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ฒซ ๋ฒ์งธ๋ก A๊ฐ ๋์ค๋ ์ ๊น์ง์ index = 3
- y : x๋ถํฐ ์์ํด์ A๊ฐ ์๋ ๋ฌธ์๊ฐ ๋์ค๋ index = 6
๊ทธ๋ ๋ค๋ฉด ์ด๋๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
๋ค๋ก (length-y)๋งํผ ์ด๋
+
๋ค์์๋ถํฐ ๋ค์ ์์ ์ผ๋ก ์ด๋(=length-y)
+
์์ ์์ ์์ผ๋ก x๊น์ง ์ด๋
์ด๋ ๊ฒ ๊ตฌํ๋ค๋ฉด ์ด ์ด๋๊ฑฐ๋ฆฌ๋ 1 + 1 + 3 = 5์ด๋ค.
์ฆ, ์ด๋ ๊ฒ ์ด๋ํ๋ ๋ฐฉ์์ด ์ต์ ์ด๋๊ฑฐ๋ฆฌ์ด๋ค.
๐ฉ NOTE
์ฆ, ์ฐ๋ฆฌ๊ฐ ๊ตฌํด์ผ ํ๋ ๊ฒ์ ์ต์ ์ X์ ์ธ๋ฑ์ค์ด๋ค.
๊ทธ๋ฌ๋ ์ํ ์์ด ์ต์ ์ x์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ๋ ๊ฒ์ ์ฝ์ง ์๋ค.
("JAZZAZ"์ ๊ฐ์ด A ๋ ๊ฐ ์ฌ์ด์ A๊ฐ ์๋ ์ํ๋ฒณ์ด ๊ปด์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ํ์์ ์๋ํด์ผ ํ๋ค.)
๋ฐ๋ผ์, name์ ์ธ๋ฑ์ค๋ฅผ ์ํํ๋ฉฐ ๋งค๋ฒ x์ y์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฐ์ดํธํด ์ฃผ๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ ๊ฒ์ด๋ค.(Greedy ํ์) ์์ ์์ ์ ๋ฐ๋ฅด๋ฉด for๋ฌธ์ index๊ฐ x์ index์ธ 4๊ฐ ๋์์ ๋ ์ต์๊ฑฐ๋ฆฌ๊ฐ 5๋ก ์ ๋ฐ์ดํธ๋ ๊ฒ์ด๊ณ ์ด๋ฅผ ์ถ๋ ฅํ ์ ์๊ฒ ๋๋ค.
โ ์ฝ๋ ๋ต์ - JAVA
class Solution {
public int solution(String name) {
int answer = 0;
int length = name.length();
int move = length - 1;
int y;
for (int x = 0; x < length; x++){
answer += Math.min(name.charAt(x) - 'A', 'Z' - name.charAt(x) + 1);
y = x + 1;
while (y < length && name.charAt(y) == 'A'){
y ++; // A๊ฐ ๋์ด์ ๋์ค์ง ์๋ index
}
move = Math.min(move, (Math.min(x+x+(length-y), x+(length-y)+(length-y))));
}
return answer + move;
}
}