
코딩테스트 연습 - 조이스틱 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
def cleck_ct(alpa_name):
alpa = {'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5,
'G':6, 'H':7, 'I':8, 'J':9, 'K':10, 'L':11,
'M':12, 'N':13, 'O':14, 'P':15, 'Q':16, 'R':17,
'S':18, 'T':19, 'U':20, 'V':21, 'W':22, 'X':23,
'Y':24, 'Z':25}
return min(alpa[alpa_name], 26-alpa[alpa_name])
def solution(name):
answer = 0
lenth_name = len(name)
name_idx = []
for i in range(len(name)):
answer+=cleck_ct(name[i])
if name[i]!='A':
name_idx.append(i)
if not name_idx:
return answer
max_lenth = name_idx[-1]
for idx in range(len(name_idx)-1):
now_idx = name_idx[idx]
next_idx = name_idx[idx+1]
if (now_idx+1)!=(next_idx):
# 오른쪽 ㄱㄱ 왼쪽
max_lenth = min(max_lenth, (now_idx*2)+lenth_name-next_idx)
# 왼쪽 ㄱㄱ 오른쪽
max_lenth = min(max_lenth, (lenth_name-next_idx)*2+now_idx)
return answer+max_lenth
시간 복잡도
for i in range(len(name)) : name을 순회하므로 선형시간
cleck_ct : 내부 딕셔너리 상수시간
for idx in range(len(name_idx)-1) : 'A'가 아닌 문자열 인덱스 리스트(name_idx)를 순회하므로 선형시간
즉, 시간 복잡도는 선형 시간복잡도( O(n) )'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글
| 순위 검색 (0) | 2024.07.25 |
|---|---|
| 양궁대회 (6) | 2024.07.23 |
| 숫자 블록 (0) | 2024.07.17 |
| 요격 시스템 (1) | 2024.07.16 |
| 혼자서 하는 틱택토 (0) | 2024.07.15 |