24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit

프로그래머스 문제 풀이 조이스틱 (수정 중)

Gurumee 2019. 12. 15. 15:24
반응형

문제 URL 조이스틱

Contents

  1. 문제 지문 파악하기
  2. 구르미의 알고리즘 풀이

문제 지문 파악하기

 

구르미의 알고리즘 풀이

<수정 중>

다음을 코드로 나타내면 다음과 같습니다. 먼저 PYTHON 코드입니다.

 

PYTHON 코드

def solution(name):
    LUT = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1]
    answer = 0
    
    for c in name:
        answer += LUT[ord(c) - ord('A')]
    
    n = len(name)
    left_or_right = n-1
    
    for i in range(n):
        _next = i + 1
        
        while _next < n and name[_next] == 'A':
            _next += 1
            
        left_or_right = min(left_or_right, i + n - _next + min(i, n-_next))
    
    answer += left_or_right
    return answer

 

다음은 CPP 코드입니다. 알고리즘은 동일합니다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(string name) {
    int LUT[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1 };
    int answer = 0;
    
    for (auto ch : name)
        answer += LUT[ch - 'A'];
    
    int len = name.length();
    int left_right = len - 1;
    
    for (int i = 0; i < len; ++i) {
        int next_i = i + 1;
        
        while (next_i < len && name[next_i] == 'A')
            next_i++;
        
        left_right = min(left_right, i + len - next_i + min(i, len - next_i));
    }
    
    answer += left_right;
    return answer;
}

 

728x90
반응형