Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- BOJ
- score distillation
- 코테
- 코딩테스트
- diffusion model
- diffusion
- 네이버 부스트캠프 ai tech 6기
- Programmers
- DP
- magdiff
- 논문리뷰
- 3d editing
- Python
- diffusion models
- Vit
- transformer
- 3d generation
- visiontransformer
- image editing
- segmentation map
- segmenation map generation
- video editing
- 프로그래머스
- VirtualTryON
- controlnext
- dreammotion
- controllable video generation
- style align
- emerdiff
- video generation
Archives
- Today
- Total
평범한 필기장
[Programmers_Python] 압축 본문
https://school.programmers.co.kr/learn/courses/30/lessons/17684
내가 생각한 풀이방식
- 'A~Z'를 key값으로 하고 1~26을 value값으로 하는 딕셔너리를 만든다.
- i번째부터 딕셔너리에 있는 값이면 딕셔너리에 있는 값까지 j에 1씩 더해서 딕셔너리에 없을 때까지 반복
- 딕셔너리에 없으면 j-1까지의 문자열의 value값을 리스트에 넣고 j까지의 문자열을 딕셔너리에 추가하고 key값은 딕셔너리 길이에 +1로 해준다.
이런 식으로 하니까 테스트 케이스 1제외하고 나머지 테스트 케이스에서 answer 마지막부분이 계속 틀리게 나왔다.
테스트 케이스 2에서 [20,15,2,5,15,18,14,15,20,27,29,31,36,30,32,34] 가 나와야하는데,[20,15,2,5,15,18,14,15,20,27,29,31,36,30,32,15,20] 가 나온다.
그래서 마지막에 딕셔너리를 출력해보니 딕셔너리의 A~Z까지의 value값이 변해있었다. 중간에 딕셔너리의 value값이 왜 바뀌는지를 찾지는 못했다,,,
내 코드
def solution(msg):
dic = dict()
for i in range(1, 27):
dic[chr(i+64)] = i
answer = []
i = 0
j = 1
while i < len(msg):
while msg[i:j] in dic:
j += 1
if j >= len(msg):
break
answer.append(dic[msg[i :j-1]])
dic[msg[i:j]] = len(dic) + 1
i = j - 1
print(dic.values())
print(dic.keys())
return answer
# 이렇게하면 딕셔너리 value값들이 변한다
정답 코드
def solution(msg):
dic = dict()
for i in range(1, 27):
dic[chr(i+64)] = i
answer = []
num = 27
word = ''
i = 0
while i < len(msg):
word += msg[i]
if word in dic:
i += 1
else:
answer.append(dic[word[:-1]])
dic[word] = num
num += 1
word = ''
answer.append(dic[word])
return answer
- 빈 문자열 word에 문자를 하나씩 추가해주고 word가 딕셔너리에 있으면 i에 +1을 해주고, 없으면 answer에 word[:-1]의 value값을 넣어준다. (word는 딕셔너리에 없지만 그전까지의 문자열 word[:-1]은 딕셔너리에 있기 때문)
위 코드처럼 하면 내 풀이에서 나온 문제가 나타나진 않았다. 어떤 부분이 틀려서 내 코드가 이상하게 돌아가는 지를 찾아내지 못해서 많이 찝찝하다. 뭔가 자꾸 한 포인트에서 틀려서 문제를 못풀어서 계속 답답하다. 아직 많은 연습이 필요한 것 같다,,,
'코딩 테스트 준비 > Programmers' 카테고리의 다른 글
[Programmers_Python] 뒤에 있는 큰 수 찾기 (0) | 2023.04.04 |
---|---|
[Programmers_Python] 2개 이하로 다른 비트 (0) | 2023.04.04 |
[Programmers_Python] 위장 (0) | 2023.03.31 |
[Programmers_Python] 뉴스 클러스터링 (0) | 2023.03.30 |
[Programmers_Python] 짝지어 제거하기 (0) | 2023.03.27 |