본문 바로가기

Coding test

99클럽 코테 스터디 19일차 TIL, 프로그래머스 / 조이스틱

🔑 오늘의 학습 키워드 : 그리디

🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42860

 

def solution(name):
    if set(name) == {'A'}:
        return 0
    
    a_pos = ord('A') # 'A' : 65, 'Z' : 90
    z_pos = ord('Z')
    
    answer = float('inf')
    
    for i in range(len(name)//2 + 1):
        l_r = name[-i:] + name[:-i] #왼쪽먼저 갔다가 + 오른쪽
        r_l = name[i: :-1] + name[i+1:][::-1] # 기준점에서 빠꾸 + 좌측
        for n in [l_r,r_l]:
            # 끝에 A들은 셀 필요 없으므로 자르기
            while n and n[-1] == 'A':
                n = n[:-1]
            cnt = [min(ord(c)-a_pos, (z_pos+1) - ord(c)) for c in n ]
            answer = min(answer, i + (len(cnt)-1) + sum(cnt))

    return answer

 

✅ 오늘의 회고

- 그리디 문제 풀이

 



#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL