๋ฐ˜์‘ํ˜•

 

๐Ÿง ๋ฌธ์ œ

๋ฌธ์ œ :
์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜์„ธ์š”. ๋งจ ์ฒ˜์Œ์—” 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๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1.  x : ์›์ ์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ด ์ฒซ ๋ฒˆ์งธ๋กœ A๊ฐ€ ๋‚˜์˜ค๋Š” ์ „๊นŒ์ง€์˜ index  = 3
  2.  y : x๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ A๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋Š” index = 6

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋™๊ฑฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฅธ์ชฝ x๋งŒํผ ์ด๋™
+
์™ผ์ชฝ์œผ๋กœ x๋งŒํผ ์ด๋™
+
์›์ ์—์„œ ๋’ค๋กœ (length - y)๋งŒํผ ์ด๋™

์ด๋ ‡๊ฒŒ ๊ตฌํ•œ๋‹ค๋ฉด ์ด ์ด๋™๊ฑฐ๋ฆฌ๋Š” 3 + 3 + (7-6) = 7์ด๋‹ค.


โ˜‘๏ธ 3. ์™ผ์ชฝ์œผ๋กœ ๋Œ์•„์„œ ๊ฐ”๋‹ค๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ญ‰

์œ„์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ๋ฐฉ์‹์€ ๋จผ์ € ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ„ ๋‹ค์Œ์— ๋’ค๋กœ ๋Œ์•„์„œ ๊ฐ€๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋„ ๊ณ ๋ คํ•ด๋ด์•ผ ํ•œ๋‹ค.

๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์™ผ์ชฝ์œผ๋กœ ๋Œ์•„๊ฐ„ ๋‹ค์Œ ๋‹ค์‹œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ญ‰ ๊ฐ€๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜์ด๋‹ค.

 

์ด๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ index ๋‘ ๊ฐœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

  1.  x : ์›์ ์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ด ์ฒซ ๋ฒˆ์งธ๋กœ A๊ฐ€ ๋‚˜์˜ค๋Š” ์ „๊นŒ์ง€์˜ index  = 3
  2.  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;
}
}

 

๋ฐ˜์‘ํ˜•
J_hzlo