https://school.programmers.co.kr/learn/courses/30/lessons/60057
쉬워보였지만 문제를 잘못 이해하기 쉬운 문제
역시 한번에 제대로 읽어야 한다
시간 아낀다고 문제 대충 읽다가 풀이방법 잘못생각해서 날리는 시간이 훨씬 많다
문제 유형 자체는 빡구현이었고, 특별한 알고리즘을 이용하는 문제는 아니었음
def solution(s):
zipped = ""
zipped_list = []
#snippet = []
for i in range(1,len(s)+1):
zipped = ""
snippet = []
for j in range(0, len(s), i):
if j+i < len(s):
if not snippet:
snippet.append([1, s[j:j+i]])
else:
if snippet[-1][1] == s[j:j+i]:
snippet[-1][0] += 1
else:
snippet.append([1, s[j:j+i]])
else:
if not snippet:
snippet.append([1, s[j:]])
else:
if snippet[-1][1] == s[j:]:
snippet[-1][0] += 1
else:
snippet.append([1, s[j:]])
#print(snippet)
for num, val in snippet:
if num != 1:
zipped += str(num)
zipped += val
zipped_list.append(zipped)
return min(list(map(len, zipped_list)))
https://school.programmers.co.kr/learn/courses/30/lessons/72412
간단한듯 하면서 안 간단했던 문제
딕셔너리와 세트를 이용한 빡구현으로 해결이 되겠지 싶었지만..
def solution(info, query):
dictionary = {"-":[]}
score_only = []
for i, v in enumerate(info):
info_parsed = v.split(" ")
for j in range(4):
if not dictionary.get(info_parsed[j]):
dictionary[info_parsed[j]] = [i]
else:
dictionary[info_parsed[j]].append(i)
score_only.append(int(info_parsed[4]))
dictionary["-"].append(i)
#print(score_only)
#info_parsed = [i.split(" ") for i in info]
query_parsed = [q.split(" and ") for q in query]
answer = []
for q in query_parsed:
result = set(dictionary["-"])
soulfood, score = q.pop().split(" ")
score = int(score)
q.append(soulfood)
for cond in q:
if cond == "-":
continue
else:
matched = set(dictionary[cond])
result = set.intersection(result, matched)
#print(score)
answer.append(len([i for i in result if score_only[i] >= score]))
return answer
이 문제는 2021년 카카오 신입공채 1차 코딩테스트 문제였음
https://tech.kakao.com/posts/420
https://school.programmers.co.kr/learn/courses/30/lessons/72414#fn1
분명히 백준에서 비슷한 유형을 본 거 같은데.. 이건 꼭 찾아봐야겠다
이분탐색으로 푼 거 같은데..
이 문제도 2021년 카카오 신입공채 1차 코딩테스트 문제였음
https://tech.kakao.com/posts/420