스틱 움직임을 시작시에 오른쪽과 왼쪽으로 구분하여 풀어가면서 더 복잡해 지는 경우가 발생한다.
1.오른쪽으로 가다가 왼쪽으로 되돌아 가는경우.
2.왼쪽으로 가다가 오른쪽으로 되돌아 가는경우.
해결 : 애초에 오른쪽으로 가는것을 기준으로 하고 되돌아 가야 할 때 되돌아 가도록 짜면 될 것 같다.
코드 첨부:
i = 0
alpha_dict = {}
for x in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
if i <= 13:
alpha_dict[x] = i
else:
alpha_dict[x] = 26-i
i +=1
def solution(name):
answer = 0
# if len(name) ==1
if len(name) == 1:
return alpah[name[0]]
len_name = len(name)
left_A_count, right_A_count = check_A_count(name)
answer += alpha_dict[name[0]]
if left_A_count <= right_A_count:
answer += left_moving_function(name,0,len_name)
# if i+1 < check_moving_cnt[lst[i+1:]] :
else :
answer += right_moving_function(name,1,len_name)
return answer
def right_moving_function(name, left_border_index, right_border_index):
answer = 0
i = right_border_index
print(i)
while i > left_border_index and name[left_border_index:i].count('A') != len(name[left_border_index:i]):
i -= 1
# next alphabet
answer +=1
# find alphabet
answer += alpha_dict[name[i]]
return answer
def left_moving_function(name, left_border_index, right_border_index):
answer = 0
i = left_border_index
while (i < right_border_index-1 ) and (name[i+1:right_border_index].count('A') != len(name[i+1:right_border_index])):
i += 1
# next alphabet
answer +=1
# find alphabet
answer += alpha_dict[name[i]]
return answer
def check_moving_cnt_to_left(lst):
index_list = [i for i in range(len(lst)-1,-1,-1) if lst[i] != 'A']
return index_list[0]+1
def check_moving_cnt_to_right(lst):
index_list = [i for i in range(len(lst)) if lst[i] != 'A']
return index_list[0]+1
def check_A_count(lst):
# check A count
len_lst = len(lst)
# print("len_name:",len_name)
half_size = int((len_lst+1)/2)
# if len(name) -1 is even
if (len_lst-1) % 2 == 0:
# make [1:half_size]
half_left_list = lst[1:half_size]
# make [half_size:]
half_right_list = lst[half_size:]
else:
# make [1:half_size]
half_left_list = lst[1:half_size]
# make [half_size:]
half_right_list = lst[half_size+1:]
left_A_count = half_left_list.count('A')
right_A_count = half_right_list.count('A')
return left_A_count, right_A_count
'알고리즘&자료구조(algorithm& data structure) > 프로그래머스(programmers)' 카테고리의 다른 글
[프로그래머스]해시-위장 문제 풀이 (0) | 2021.01.03 |
---|---|
[프로그래머스 / 고득점 kit] 탐욕법: 조이스틱 ver2 (0) | 2019.07.24 |
[programmers/ 고득점 kit] 정렬: 가장 큰수 (0) | 2019.07.16 |
[programmers/ 고득점 kit] 해시: 베스트 앨범 (0) | 2019.07.13 |