반응형

#include <string>
#include <vector>

using namespace std;

int solution(string name) {
    int answer = 0;
    
    for (int i = 0; i < name.size(); i++) {
        
        int tmp = name[i] - 'A';
        
        if(name[i] == 'A') {
            answer += 1;
            goto SKIP;
        }
        
        if (tmp > 13) {
            tmp = 26 - tmp;
        }
        
        answer += tmp;
        
    SKIP:
        if(i == name.size() - 1) {
            break;
        }
        
        //다음 이동을 어떻게 할지 정함
        int target = i + 1;
        while (name[target] == 'A' && target < name.size() - 1) {
                target += 1;
        }
    
        int reverse = name.size() - 1;
        
        while (name[reverse] == 'A' && reverse > target) {
                reverse -= 1;
        }
    
        if (target - i > i + 1 + name.size() - 1 - reverse) {
            i = target - 1;
            answer += target - i;
        } else {
            i = reverse - 1;
            answer += i + 1 + name.size() - 1 - reverse;
        }
    
    }
    return --answer;
}

반응형

'프로그래밍' 카테고리의 다른 글

DirectDraw 2  (0) 2021.06.10
Ruby 1 - 설치, 출력 puts, 문자열('', ""), 인터프리트  (0) 2021.06.10
DirectDraw 프로그래밍 1  (0) 2021.06.08
5일 - 체육복(탐욕, set)  (0) 2021.06.08
4일 - 위장(map,set)  (0) 2021.06.07

+ Recent posts