반응형 알고리즘/카카오 기출문제15 [파이썬🐍] 프로그래머스 : 괄호 변환 def isRight(s): stack = 0 for i in s: if i == '(' : stack += 1 else : stack -= 1 if stack < 0 : return False return True def reverse(s): ans = '' for i in s : if i == '(' : ans += ')' else : ans += '(' return ans def solution(p): if p == '' : return '' #1 stack = 0 #2 for i in range(len(p)): if p[i] == "(" : stack += 1 else : stack -= 1 if stack == 0: u = p[:i+1] v = p[i+1:] break if isRight(u) .. 2021. 6. 26. [파이썬🐍] 프로그래머스 : [1차] 캐시 from collections import deque def solution(cacheSize, cities): answer = 0 buffer = deque() if cacheSize == 0: return len(cities) * 5 else: for i in cities: i = i.lower() #대소문자 구분 X if i in buffer: answer += 1 else: answer += 5 if i in buffer: #이미 존재한다면 buffer.remove(i) #제거 else: if len(buffer) >= cacheSize: #꽉 찼다면 buffer.popleft() #가장 오랫동안 사용되지 않은 튜플 제거 buffer.append(i) #가장 최근으로 추가 return answer.. 2021. 5. 26. [파이썬🐍] 프로그래머스 : 오픈채팅방 def solution(record): userdic = {} answer = [] for i in record: if (i.split(' ')[0] == "Enter") | (i.split(' ')[0] == "Change"): userdic[i.split(' ')[1]] = i.split(' ')[2] for i in record: if i.split(' ')[0] == "Enter": answer.append("{}님이 들어왔습니다.".format(userdic[i.split(' ')[1]])) if i.split(' ')[0] == "Leave": answer.append("{}님이 나갔습니다.".format(userdic[i.split(' ')[1]])) return answer 닉네임 바뀔 수.. 2021. 5. 9. [파이썬🐍] 프로그래머스 : 문자열 압축 def solution(s): answer = len(s) for step in range(1,len(s)//2+1): compressed="" prev=s[0:step] count=1 for j in range(step,len(s),step): if prev==s[j:j+step]: count+=1 else: compressed+=str(count)+prev if count>=2 else prev prev=s[j:j+step] count=1 compressed+=str(count)+prev if count>=2 else prev answer=min(answer,len(compressed)) return answer 2021. 5. 7. 이전 1 2 3 4 다음 반응형