๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/2๋‹จ๊ณ„

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

by Jaeguk 2022. 6. 22.
๋ฌธ์ œ ๋งํฌ

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์กฐ์ด์Šคํ‹ฑ

์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜์„ธ์š”. ๋งจ ์ฒ˜์Œ์—” A๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ex) ์™„์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด๋ฆ„์ด ์„ธ ๊ธ€์ž๋ฉด AAA, ๋„ค ๊ธ€์ž๋ฉด AAAA ์กฐ์ด์Šคํ‹ฑ์„ ๊ฐ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. โ–ฒ - ๋‹ค

programmers.co.kr

์›ํ•˜๋Š” ์ด๋ฆ„์„ ์™„์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ์ด์Šคํ‹ฑ์„ ์ตœ์†Œํ•œ ๋ช‡ ๋ฒˆ ์กฐ์ž‘ํ•ด์•ผํ•˜๋Š” ์ง€ ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ œ.

 

ํ’€์ด

 ์ด๋ฒˆ ๋ฌธ์ œ๊ฐ€ ์—ฌํƒœ๊นŒ์ง€ ํ’€์–ด๋ณธ 2๋‹จ๊ณ„ ๋ฌธ์ œ์ค‘์— ์ œ์ผ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.

๋‚ด ๋ฐฉ์‹๋Œ€๋กœ ๋ช‡ ๋ฒˆ์„ ์‹œ๋„ํ•ด๋ดค์ง€๋งŒ ๋ช‡ ๊ฐœ์˜ ์ผ€์ด์Šค์—์„œ ๊ณ„์† ์‹คํŒจํ•ด์„œ, ๊ฒฐ๊ตญ ๊ตฌ๊ธ€ ์„ ์ƒ๋‹˜๋“ค๊ป˜ ๊ฐ€๋ฅด์นจ์„ ๋ฐ›์•˜๋‹ค.

์ดˆ๊ธฐ์— ์ด๋ฆ„์€ 'A' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์œผ๋ฉฐ ์กฐ์ด์Šคํ‹ฑ์„ ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์„œ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์™„์„ฑํ•ด์•ผํ•œ๋‹ค.

์กฐ์ด์Šคํ‹ฑ์˜ ์กฐ์ž‘์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

โ–ฒ - ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ
โ–ผ - ์ด์ „ ์•ŒํŒŒ๋ฒณ (A์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด Z๋กœ)
โ—€ - ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ (์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— ์ปค์„œ)
โ–ถ - ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ (๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์— ์ปค์„œ)

 

 ๋จผ์ € ์กฐ์ด์Šคํ‹ฑ์„ ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ์กฐ์ž‘ํ•  ๋•Œ, ์ตœ์†Œํ•œ์˜ ํšŸ์ˆ˜๋กœ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์ž.

๋งŒ์•ฝ 'A'๋ฅผ 'C'๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์ž. ์ด๋•Œ ์กฐ์ด์Šคํ‹ฑ์„ ์œ„๋กœ 2๋ฒˆ ์กฐ์ž‘ํ•ด์„œ C๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์ง€๋งŒ,

์•„๋ž˜๋กœ 24๋ฒˆ ์กฐ์ž‘ํ•ด์„œ C๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.( A -> Z -> Y -> X -> ... -> C ์ˆœ)

๋ฌธ์ž ๋ผ๋ฆฌ๋„ +, - ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋ฐ”๋€Œ์–ด์„œ ๊ณ„์‚ฐ๋œ๋‹ค.

๋”ฐ๋ผ์„œ 'C' - 'A' ๋ฅผ ํ•˜๋ฉด ์•„์Šคํ‚ค์ฝ”๋“œ ์ƒ 2๊ฐ€ ์ฐจ์ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐ€ ๋ฆฌํ„ด๋œ๋‹ค.

์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. (์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ - 'A') ๋ฅผ ํ•œ ํšŸ์ˆ˜๋งŒํผ ์กฐ์ด์Šคํ‹ฑ์„ ์œ„๋กœ ์กฐ์ž‘ํ•œ๋‹ค.

2. (26 - (์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ - 'A')) ๋ฅผ ํ•œ ํšŸ์ˆ˜๋งŒํผ ์กฐ์ด์Šคํ‹ฑ์„ ์•„๋ž˜๋กœ ์กฐ์ž‘ํ•œ๋‹ค.

์ด๋•Œ 26์—์„œ ๋นผ์ฃผ๋Š” ์ด์œ ๋Š” ์•ŒํŒŒ๋ฒณ์˜ ์ด ๊ฐœ์ˆ˜๊ฐ€ 26๊ฐœ์ด๊ธฐ ๋–„๋ฌธ์—.

 

์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ์ขŒ์šฐ๋กœ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์˜€๋‹ค.

์ปค์„œ๋ฅผ ์•ŒํŒŒ๋ฒณ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ์นธ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์กฐ์ด์Šคํ‹ฑ์„ ์กฐ์ž‘ํ•ด์•ผํ•œ๋‹ค.

์ด๋•Œ ์กฐ์ด์Šคํ‹ฑ ์กฐ์ž‘ํšŸ์ˆ˜๊ฐ€ ์ตœ์†Œ๊ฐ€ ๋˜๋„๋กํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

์—ฐ์†๋œ A์˜ ์•ž๋’ค๋ฅผ ๊ฐ๊ฐ i์™€ ind๋ผ๊ณ  ํ–ˆ์„ ๋•Œ,

์ขŒ์šฐ ์ด ์ด๋™ํšŸ์ˆ˜์˜ ์ตœ์†Œ๊ฐ’์„ ์œ„์™€ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ตฌ๊ธ€์—์„œ ์ฐธ๊ณ ํ•œ ์•„์ด๋””์–ด)

answer = (๊ฐ ์ž๋ฆฌ๋งˆ๋‹ค ์ƒํ•˜ ์กฐ์ž‘ ํšŸ์ˆ˜ + ์ขŒ์šฐ ์ตœ์†Œ ์ด๋™ํšŸ์ˆ˜ ํ•ฉ) ์ด ๋œ๋‹ค.

 

์ฝ”๋“œ ์ž‘์„ฑ
 
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
 
int solution(string name) {
    int answer = 0;
    int left_right = name.length() - 1;
    
    for(int i = 0; i<name.length(); i++){
        answer += min(name[i] - 'A'26 - (name[i] - 'A'));
        int end = i + 1;
        while(end < name.length() && name[end== 'A')
            end++;
        left_right = min(left_right, i + (int)name.length() - end + min(i, (int)name.length() - end));
    }
    answer += left_right;
    return answer;
}
cs

 

๋ณด๊ณ  ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ด๋„ ์–ด๋ ค์šด ์ด๋Ÿฐ ์•„์ด๋””์–ด๋ฅผ ์ƒ๊ฐํ•ด๋‚ด์‹œ๋Š” ๋ถ„๋“ค์€ ์ฒœ์žฌ์ธ๋“ฏ ํ•˜๋‹ค.

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์˜ ๊ธธ์€ ๋ฉ€๊ณ ๋„ ํ—˜ํ•˜๋‹ค...

728x90