Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์กฐ์ด์Šคํ‹ฑ

giraffe_ 2023. 10. 24. 15:45

https://school.programmers.co.kr/learn/courses/30/lessons/42860

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

 

 

 

๋ฌธ์ œ

  • ์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜์„ธ์š”. ๋งจ ์ฒ˜์Œ์—” A๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ex) ์™„์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด๋ฆ„์ด ์„ธ ๊ธ€์ž๋ฉด AAA, ๋„ค ๊ธ€์ž๋ฉด AAAA
  • ์กฐ์ด์Šคํ‹ฑ์„ ๊ฐ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • โ–ฒ - ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ
    • โ–ผ - ์ด์ „ ์•ŒํŒŒ๋ฒณ (A์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด Z๋กœ)
    • โ—€ - ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ (์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— ์ปค์„œ)
    • โ–ถ - ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ (๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์— ์ปค์„œ)
  • ์ด๋ฆ„์— ๋Œ€ํ•ด ์กฐ์ด์Šคํ‹ฑ ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๊ธฐ

 

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ "JAZ"๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์กฐ์ด์Šคํ‹ฑ์„ ์œ„๋กœ 9๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ J๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ์ด์Šคํ‹ฑ์„ ์™ผ์ชฝ์œผ๋กœ 1๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ ์ปค์„œ๋ฅผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์กฐ์ด์Šคํ‹ฑ์„ ์•„๋ž˜๋กœ 1๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ Z๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ 11๋ฒˆ ์ด๋™์‹œ์ผœ "JAZ"๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ๊ฐ€ ์ตœ์†Œ ์ด๋™์ž…๋‹ˆ๋‹ค.

 

 

์ œํ•œ ์‚ฌํ•ญ

  • name์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • name์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

ํ’€์ด1 : ๊ทธ๋ฆฌ๋”” (=ํ‹€๋ฆฐ ํ’€์ด)

์ฒ˜์Œ์—๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋ฒ•์ด ํƒ์š•๋ฒ•(Greedy)๋กœ ๋ถ„๋ฅ˜๊ฐ€ ๋˜์–ด์žˆ์–ด์„œ ๊ทธ๋ฆฌ๋””ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์—ˆ๋‹ค.

 

  • intํ˜•์˜ ๋ฐฐ์—ด์— ๊ฐ ๋ฌธ์ž๋ณ„๋กœ A์—์„œ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์กฐ์ž‘ํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๋””ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ (ํ˜„์žฌ ์œ„์น˜์—์„œ ํ•ด๋‹น ์ˆซ์ž๊นŒ์ง€์˜ ์ด๋™ ํšŸ์ˆ˜ + ์กฐ์ž‘ ํšŸ์ˆ˜)๊ฐ€ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ์กฐ์ž‘ํ•œ๋‹ค.
  • ์กฐ์ž‘๋œ ์œ„์น˜๋Š” 0์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
  • ๋ฌธ์ž๋ฅผ ๋‹ค ์กฐ์ž‘ํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. 

 

 

 

 

 

์‹คํŒจ ์ฝ”๋“œ

class Solution {
    public int solution(String name) {
        int[] times = new int[name.length()]; //ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ์ž‘ํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜
        int count = 0; //์กฐ์ž‘๋œ ๋ฌธ์ž ์ˆ˜
        
        for(int i = 0; i < name.length(); i++) {
            char ch = name.charAt(i);
            
            int up = ch - 65; //์œ„๋กœ ์˜ฌ๋ ธ์„ ๋•Œ ํšŸ์ˆ˜
            int down = 90 - ch + 1; //์•„๋ž˜๋กœ ๋‚ด๋ ธ์„ ๋•Œ ํšŸ์ˆ˜
            
            times[i] = Math.min(up, down);
            
            if(times[i] == 0) { //์ด๋ฏธ A์ด๋ฉด ์กฐ์ž‘๋œ ๋ฌธ์ž ๊ฐœ์ˆ˜์— ์˜ฌ๋ฆฌ๊ธฐ
                count++;
            }
        }
        
        //๊ตฌํ˜„
        int answer = 0; //์ •๋‹ต : ์กฐ์ž‘ ํšŸ์ˆ˜
        int cursor_now = 0; //์ปค์„œ ์œ„์น˜
        
        while(count < name.length()) {
            // for(int n : times) {
            //     System.out.print(n + " ");
            // }
            
            //์–‘์˜†์œผ๋กœ ์ด๋™ํ•ด์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์กฐ์ž‘ ์•ˆ๋œ ์œ„์น˜ ๊ตฌํ•˜๊ธฐ
            int cursor_left = cursor_now;
            int left_count = 0;
            while(true) { //0(์กฐ์ž‘ ์™„๋ฃŒ)์ด ์•„๋‹ ๋•Œ๊นŒ์ง€
                if(times[cursor_left] != 0) break;
                
                cursor_left--; //์™ผ์ชฝ์œผ๋กœ ์ด๋™
                left_count++;
                
                if(cursor_left == -1) { //๋์— ๋„๋‹ฌํ•˜๋ฉด
                    cursor_left = name.length() - 1; //๋์œผ๋กœ
                }
            }
            
            int cursor_right = cursor_now;
            int right_count = 0;
            while(true) { //0(์กฐ์ž‘ ์™„๋ฃŒ)์ด ์•„๋‹ ๋•Œ๊นŒ์ง€
                if(times[cursor_right] != 0) break;
                
                cursor_right++; //์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
                right_count++;
                
                if(cursor_right == name.length()) { //๋์— ๋„๋‹ฌํ•˜๋ฉด
                    cursor_right = 0; //์ฒ˜์Œ์œผ๋กœ
                }
            }
            
            // System.out.print("ํ˜„์žฌ: " + cursor_now + " ์™ผ์ชฝ: " + cursor_left + " ์˜ค๋ฅธ์ชฝ: " + cursor_right);
                
            //ํ˜„์žฌ ์œ„์น˜ ~ ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ์ด๋™ ํšŸ์ˆ˜ + ์กฐ์ž‘ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ
            int left = left_count + times[cursor_left];
            int right = right_count + times[cursor_right];
            
            //์กฐ์ž‘ ํšŸ์ˆ˜๊ฐ€ ์ž‘์€ ์œ„์น˜๋กœ ์ด๋™
            if(left < right) {
                // System.out.println(" ์™ผ์ชฝ ์กฐ์ž‘ํšŸ์ˆ˜: " + left_count + "+" + times[cursor_left]);
                cursor_now = cursor_left;
                answer += left; //์กฐ์ž‘ ํšŸ์ˆ˜ ์ฆ๊ฐ€
            } else {
                // System.out.println(" ์˜ค๋ฅธ์ชฝ ์กฐ์ž‘ํšŸ์ˆ˜: " + right_count + "+" + times[cursor_right]);
                cursor_now = cursor_right;
                answer += right; //์กฐ์ž‘ ํšŸ์ˆ˜ ์ฆ๊ฐ€
            }
            
            times[cursor_now] = 0; //์กฐ์ž‘ ์™„๋ฃŒ
            
            count++;
        }
        
        return answer;
    }
}

 

 

 

 

 

์‹คํŒจ ๊ฒฐ๊ณผ

 ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ’€์—ˆ๋”๋‹ˆ ๋ชจ๋“  TC๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜์—ฌ 59์ ์ด ๋‚˜์™”๋‹ค. ๊ฒŒ์‹œํŒ์„ ๋ณด๋‹ˆ ์˜ˆ์ „์—๋Š” ๊ทธ๋ฆฌ๋””๋กœ ํ’€๋ ธ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, TC๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๊ทธ๋ฆฌ๋””๋กœ๋Š” ํ’€ ์ˆ˜ ์—†๊ฒŒ ๋ฐ”๋€ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๋””๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์— ์†์ง€ ๋ง์ž!

 

 

 

 

 

๊ฒŒ์‹œํŒ์—์„œ ์ฐพ์€ ๋ฐ˜๋ก€๊ฐ€ ์žˆ๋‹ค.

"ABAAABB”์ธ ๊ฒฝ์šฐ, ์ฒ˜์Œ ์œ„์น˜์ธ 0์—์„œ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ชจ๋‘ 1ํšŒ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๊ฒŒ ๋  ๊ฒฝ์šฐ ์ดํ›„, ์™ผ1, ์™ผ1, ์˜ค3์œผ๋กœ ์ด 5ํšŒ,

์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œ์ž‘ํ•  ๊ฒฝ์šฐ ์ดํ›„, ์˜ค1, ์™ผ2, ์™ผ1๋กœ ์ด 4ํšŒ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๋””ํ•œ ๋ฐฉ๋ฒ•์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 

 

ํ’€์ด2 : ๋ถ€๋ฅดํŠธํฌ์Šค, ํˆฌํฌ์ธํ„ฐ

 ๊ทธ๋Ÿผ ๊ทธ๋ฆฌ๋””๊ฐ€ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ถ€๋ฅดํŠธํฌ์Šค(์™„์ „ํƒ์ƒ‰) ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด์•ผ ๋ชจ๋“  TC๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์‹ค ์กฐ์ž‘ ํšŸ์ˆ˜์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒƒ์€ ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋Š” ํšŸ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ขŒ์šฐ๋กœ ์›€์ง์ด๋Š” ํšŸ์ˆ˜์ด๋‹ค. ์œ„ ์•„๋ž˜๋กœ ์กฐ์ž‘ํ•˜๋Š” ํšŸ์ˆ˜๋Š” '์œ„๋กœ ์กฐ์ž‘ํ–ˆ์„ ๋•Œ์™€ ์•„๋ž˜๋กœ ์กฐ์ž‘ํ–ˆ์„ ๋•Œ์˜ ์ตœ์†Ÿ๊ฐ’'์œผ๋กœ ์ •ํ•ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋Š” ํšŸ์ˆ˜๋Š” ๋”ฐ๋กœ ๊ณ„์‚ฐํ•˜๊ณ , ์ขŒ์šฐ๋กœ ์›€์ง์ด๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’๋งŒ ์‹ ๊ฒฝ์„ ์“ฐ๋ฉด ๋œ๋‹ค.

 

 

 

์ขŒ์šฐ๋กœ ์›€์ง์ด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ฐฉํ–ฅ ์ „ํ™˜ ์—†์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ณ„์† ์›€์ง์ด๋Š” ๊ฒฝ์šฐ
  • ๋ฐฉํ–ฅ ์ „ํ™˜ ์—†์ด ์™ผ์ชฝ์œผ๋กœ ๊ณ„์† ์›€์ง์ด๋Š” ๊ฒฝ์šฐ
  • ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ ์™ผ์ชฝ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•ด ์›€์ง์ด๋Š” ๊ฒฝ์šฐ
  • ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•ด ์›€์ง์ด๋Š” ๊ฒฝ์šฐ

 

 

 

 

ํ•œ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ”์„ ๋•Œ์˜ ๊ฐ’์€ (Name์˜ ๊ธธ์ด - 1)๋กœ, ์ตœ๋Œ€๊ฐ’์ด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์˜ TC์˜ ๊ฒฝ์šฐ์—๋Š”, ์ค‘๊ฐ„์— ๋ฐฉํ–ฅ ์ „ํ™˜์„ ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋” ์ ์€ ์กฐ์ž‘ ํšŸ์ˆ˜๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, A๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฐฉํ–ฅ ์ „ํ™˜์„ ํ•ด์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์ด ์กฐ์ž‘ ํšŸ์ˆ˜๋Š” (์‹œ์ž‘์ ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ๋•Œ์˜ ๊ธธ์ด * 2) + (์‹œ์ž‘์ ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐˆ ๋•Œ์˜ ๊ธธ์ด)๊ฐ€ ๋œ๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, A๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฐฉํ–ฅ ์ „ํ™˜์„ ํ•ด์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์ด ์กฐ์ž‘ ํšŸ์ˆ˜๋Š” (์‹œ์ž‘์ ๋ถ€ํ„ฐ ์™ผ์ชฝ์œผ๋กœ ๊ฐˆ ๋•Œ์˜ ๊ธธ์ด * 2) + (์‹œ์ž‘์ ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ๋•Œ์˜ ๊ธธ์ด)

 

 

 

 

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์•Œ๋ ค๋ฉด, ์‹œ์ž‘์ ์„ 0๋ถ€ํ„ฐ Name์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ตœ์†Œ ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

์‹œ์ž‘์ ๊ณผ ๋์ ์ด ์žˆ๊ณ , ์‹œ์ž‘์ ๊ณผ ๋์ ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉด์„œ ํ‘ธ๋Š” ๋ฐฉ์‹์ด ํˆฌํฌ์ธํ„ฐ์™€ ์œ ์‚ฌํ•˜๋‹ค.

 

  • ์‹œ์ž‘์ ์„ 0๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋ชจ๋‘ ๋‘๊ณ 
  • ์‹œ์ž‘์ ์„ ๊ธฐ์ค€์œผ๋กœ 3๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜์— ๋Œ€ํ•ด ๊ฐ๊ฐ ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  • 3๊ฐ€์ง€ ๊ฒฝ์šฐ ์ค‘, ์ตœ์†Œ ์กฐ์ž‘ ํšŸ์ˆ˜๊ฐ€ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ด๋™ํšŸ์ˆ˜๊ฐ€ ๋œ๋‹ค.
  • ๋ชจ๋“  ์‹œ์ž‘์ ์— ๋Œ€ํ•ด ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜์—ฌ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

class Solution {
    public int solution(String name) {
        int answer = 0; //์ •๋‹ต : ์กฐ์ž‘ ํšŸ์ˆ˜
        int length = name.length();
        int move = length - 1; //์ขŒ์šฐ ์›€์ง์ž„ ์ˆ˜ : ์ตœ๋Œ€๋Š” ๊ธธ์ด - 1
        
        for(int start = 0; start < length; start++) {
            //์ƒํ•˜ ์ด๋™ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ
            char ch = name.charAt(start);
            int up = ch - 'A'; //์œ„๋กœ ์˜ฌ๋ ธ์„ ๋•Œ ํšŸ์ˆ˜
            int down = 'Z' - ch + 1; //์•„๋ž˜๋กœ ๋‚ด๋ ธ์„ ๋•Œ ํšŸ์ˆ˜
            
            answer += Math.min(up, down);
            
            //์ขŒ์šฐ ์ด๋™ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ
            int end = start + 1; //๋‹ค์Œ A๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค
            
            while(end < length && name.charAt(end) == 'A'){ //A๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ํƒ์ƒ‰
                end++;
            }
            
            int l1 = start; //์•ž ๋ถ€๋ถ„์˜ ๊ธธ์ด
            int l2 = length - end; //๋’ท ๋ถ€๋ถ„์˜ ๊ธธ์ด

            //์ •๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ”์„ ๋•Œ์™€
            //์ •๋ฐฉํ–ฅ ๊ฐ”๋‹ค๊ฐ€ ์—ญ๋ฐฉ๋ฑก ๊ฐ€๋Š” ๊ฒฝ์šฐ, ์—ญ๋ฐฉํ–ฅ ๊ฐ”๋‹ค๊ฐ€ ์ •๋ฐฉํ–ฅ ๊ฐ€๋Š” ๊ฒฝ์šฐ ๋น„๊ต
            move = Math.min(move, l1 + l2 + Math.min(l1, l2));      
        }
        
        return answer + move;
    }
}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

์ฐธ๊ณ 

 

[C++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์กฐ์ด์Šคํ‹ฑ

๋ฌธ์ œ ์ ‘๊ทผ๋ฒ• ์กฐ์ด์Šคํ‹ฑ์„ ์œ„ ์•„๋ž˜๋กœ ์›€์ง์ด๋Š”๊ฑด ์‰ฌ์šฐ๋‹ˆ ์„ค๋ช…์„ ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์ขŒ, ...

blog.naver.com

 

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ์ด์Šคํ‹ฑ ์ž๋ฐ”

์กฐ์ด์Šคํ‹ฑ ๋ฌธ์ œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต Greedy์— ์žˆ์Šต๋‹ˆ๋‹ค.

velog.io