첫번째 코드
alpha라는 리스트에 원소를 추가하면서 만약에 다음 원소가 alpha에 있는 경우
"현재 길이 - 인덱스"를 통해 길이를 확인하여 answer에 추가하고
사용된 원소를 제거하고 새로운 원소를 삽입하는 아이디어를 생각했다.
def solution(s):
answer = []
alpha = []
for i in s:
if i not in alpha:
alpha.append(i)
answer.append(-1)
else:
index = alpha.index(i)
answer.append(len(alpha) - index)
del alpha[index]
alpha.append(i)
return answer
오류;
두번째 코드
원인은 "aabba"의 경우 [-1, 1, -1, 1, 3]이 나와야 하는데
내 코드의 경우 앞의 a와 b가 삭제되어 [-1, 1, -1, 1, 2]가 나오게 된다!
그렇기 때문에 중간에 원소를 제거하지 않고 원소를 모은다.
그리고 만약에 같은 경우가 생기면 같은 원소인 인덱스들을 모아 최소의 인덱스만 answer에 합치는 코드를 작성했다.
def solution(s):
answer = []
index = -1
for i in range(len(s)):
indexs= []
for j in range(i-1, -1, -1):
if s[i] == s[j]:
index = i - j
indexs.append(index)
if indexs:
answer.append(min(indexs))
else:
answer.append(-1)
return answer
통과!! 이지만 많은 용량을 차지했다.
세번째 코드
굳이 인덱스들을 모아 최소값을 이용하지 말고
그냥 마지막부터 loop을 돌려 같은 것이 있으면 해당 위치에서 인덱스를 구하고 반복문에서 빠져나오면 계산이 간단해질 것 같다!
def solution(s):
answer = []
for i in range(len(s)):
index = -1
for j in range(i-1, -1, -1):
if s[i] == s[j]:
index = i - j
break
answer.append(index)
return answer
훨씬 차이 나는 용랑으로 역시 통과:)
오늘은 머리가 잘 안굴러가는 것일까 아니면 문제가 어려운 것일까... 푸는데 꽤 오래 걸렸던 것 같다..
링크
programmers/프로그래머스/1/142086. 가장 가까운 같은 글자 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
푸드 파이트 대회 (2) | 2024.04.26 |
---|---|
체육복 (2) | 2024.04.26 |
정수 내림차순으로 배치하기 (2) | 2024.04.21 |
나머지가 1이 되는 수 찾기 (0) | 2024.04.20 |
카드 뭉치 (2) | 2024.04.19 |