24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit
프로그래머스 문제 풀이 조이스틱 (수정 중)
Gurumee
2019. 12. 15. 15:24
반응형
문제 URL 조이스틱
Contents
- 문제 지문 파악하기
- 구르미의 알고리즘 풀이
문제 지문 파악하기
구르미의 알고리즘 풀이
<수정 중>
다음을 코드로 나타내면 다음과 같습니다. 먼저 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
반응형