프로그래머스(Programmers)

프로그래머스 조이스틱 C++

cosmohoo 2022. 3. 22. 00:50
반응형

문제 설명

 

제한 사항

  • name은 알파벳 대문자로만 이루어져 있습니다.
  • name의 길이는 1 이상 20 이하입니다.

입출력 예

name                                                                                                                                     return

"JEROEN" 56
"JAN" 23

 

 

=> 풀이는 아래 그림으로 첨부하겠습니다. 

 

문제 풀이

 


 

 

#include <algorithm>
#include <string>

using namespace std;

int solution(string name) {
    int answer = 0;
    int n = name.length();
    int turn = n - 1; //조이스틱을 한 방향으로 쭉 움직였을 때
    for (int i = 0; i < n; i++) {
        if (name[i] - 'A' < 14) answer += name[i] - 'A';
        else answer += 'Z' - name[i] + 1;

        int ind = i + 1;
        while (ind < n && name[ind] == 'A') ind++;

        turn = min(turn, i + n - ind + min(i, n - ind));
    }

    answer += turn;
    return answer;
}
반응형