오늘은 어려웠던 코드타카 문제 위주로 TIL을 작성해본다.
코드타카 enumerate(인덱스와 값을 같이 출력해주는 문제)
- 문제
- 나의 풀이
- 앞에 같은 문자가 있으면 얼만큼 떨어져 있는지, 인덱스라는 개념을 통해 깨달았지만 그걸 어떻게 구현할지 헤맸다.
- 가령 “banana”일 때 두번째 ‘a’의 경우 인덱스 3-1하면 된다.
- 즉 두번째 ‘a’ 인덱스 3 - 첫번째 ‘a’ 인덱스 1 = 2 이이다.
def solution(s):
answer = [] #숫자(값)을 담을 리스트
words = [] #문자 값을 담을 리스트
for w in s:
if w not in words:
answer.append(-1)
words.append(w)
elif w in words:
searched_index = s.index(w)
result = searched_index - 1
answer.append(result)
return answer
solution("banana")
- 문제 구조화
- 앞의 글자가 없으면 -1 출력
- 앞의 글자가 있으면
- 두번째 인덱스 - 첫번째 인덱스의 값 출력 (ex a는 자신보다 두 칸 앞에 a가 있다. = 차이 = 인덱스간의 차)
- 핵심 풀이
- 인덱스, 값을 같이 출력하는 enumerate 함수 사용
- 각 글자의 반복 횟수를 파악해야 하므로 문자 별 인덱스를 담는 딕셔너리 활용
- 즉 이미 딕셔너리 안에 같은 문자가 있다면 인덱스끼리의 차를 출력
def solution(s):
answer = [] #정답을 출력할 빈 리스트
word_index = {} #문자의 인덱스를 파악할 빈 딕셔너리
for i ch in emuerate(s):
if ch in word_index: #문자가 딕셔너리에 있다면?
answer.append(i - word_index[i])
else:
answer.apppend(-1)
word_index[ch] = i #각 문자 별 인덱스 딕셔너리 형태로 담기
return answer
# order_index = {'b':0, 'n':1, 'a':2, 'n':}
-i-ch--word_index-------------
# 0 b {'b':0}
# 1 a {'b':0, 'a':1}
# 2 n {'b':0, 'a':1 'n':2}
# 3 a {'b':0, 'a':1 'n':2, 'a':3}
코드타카 emunerate, value[::-1]
- 문제
- 나의 풀이
def solution(food):
answer = ''
for i, ch in enumerate(food):
num = ch // 2
if num != 0:
counted = str(i)*num
answer += counted
reversed_answer = answer[::-1]
result = answer + '0' + reversed_answer
return result
- 풀이과정

- 다른 사람의 풀이 1️⃣
- 문자열 누적 대신 리스트로 모아두고 마지막에 ''.join()으로 합치기
- left = [ ‘1’, ‘22’, ‘333’ ]
- left_str = ‘’join[left]
- ''.join() : 리스트 안에 있는 문자요소들을 하나의 문자열로 합쳐준다.
def solution(food): left = [] for i, ch in enumerate(food): left.append(str(i) * (ch // 2)) left_str = ''.join(left) return left_str + '0' + left_str[::-1] - 다른 사람의 풀이 2️⃣
- 리스트 컴프리헨션 + join 한 줄 요약
- 위 풀이를 한 줄로 줄이기
def solution(food): half = ''.join([str(i) * (ch // 2) for i, ch in enumerate(food)]) return half + '0' half[::-1]
- 다른 사람의 풀이 1️⃣
'기타 > Python' 카테고리의 다른 글
| 250728_파이썬(무슨요일인지 맞추기), 태블로 기초 (1) | 2025.07.28 |
|---|---|
| 250725_파이썬(표준 라이브브러리), 태블로(기본개념) (3) | 2025.07.25 |
| 250711_파이썬(순열과 조합), 데이터분석의 흐름 (1) | 2025.07.11 |
| 250710_파이썬(표준라이브러리), 머신러닝(선형회귀, 랜덤포레스트 복습) (2) | 2025.07.10 |
| 250703_파이썬(길이 N의 부분문자열 뽑기), visual studio code 가상환경 설정 (4) | 2025.07.03 |