목록카카오 (7)
컴공생의 다이어리
[프로그래머스] 괄호 변환 - 파이썬(Python) from collections import deque def separate_u_v(p): # 문자열 p를 u와 v로 분리 # u : 균형잡힌 괄호 문자열, v : 나머지 open_p, close_p = 0, 0 for i in range(len(p)): if p[i] == '(': open_p += 1 else: close_p += 1 if open_p == close_p: return p[:i + 1], p[i + 1:] # u, v def check_balance(u): # 문자열 u가 올바른 괄호 문자열인지 체크 stack = deque() for i in u: if i == '(': stack.append(i) else: if not stack..
[프로그래머스] 문자열 압축 - 파이썬(Python) def solution(s): answer = len(s) for step in range(1, len(s) // 2 + 1): comp = '' prev = s[0:step] count = 1 for i in range(step, len(s), step): if prev == s[i:i + step]: count += 1 else: comp += str(count) + prev if count >= 2 else prev prev = s[i:i + step] count = 1 comp += str(count) + prev if count >= 2 else prev answer = min(answer, len(comp)) return answer htt..
[프로그래머스] 비밀지도 - 파이썬(Python) def solution(n, arr1, arr2): answer = [] for i, j in zip(arr1, arr2): temp = str(bin(i | j)[2:]).rjust(n, '0') temp = temp.replace('1', '#') temp = temp.replace('0', ' ') answer.append(temp) return answer https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는..
[프로그래머스] 방금그곡 - 파이썬(Python) def shap_to_lower(s): # 샵이 포함된 음을 소문자로 변경 s = s.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f').replace('G#', 'g').replace('A#', 'a') return s def solution(m, musicinfos): data = [] m = shap_to_lower(m) for i in musicinfos: i = i.split(',') data.append([ int(i[1][:2]) * 60 + int(i[1][3:]) - (int(i[0][:2]) * 60 + int(i[0][3:])), # 재생시간 i[2], # 제목 shap_to_lower..
[프로그래머스] 캐시 - 파이썬(Python) from collections import deque def solution(cacheSize, cities): answer = 0 cache = deque(maxlen=cacheSize) if cacheSize == 0: # 캐시 크기가 0일 때 return len(cities) * 5 for c in cities: c = c.lower() # 대소문자 구분하지 않기 위해 모두 소문자로 변경 if c in cache: # 캐시에 있는 데이터라면 answer += 1 cache.remove(c) # 데이터 삭제 else: # 캐시에 없는 데이터라면 answer += 5 cache.append(c) return answer https://programmers...
[프로그래머스] 후보키 - 파이썬(Python) from itertools import combinations def solution(relation): len_key = len(relation[0]) candidate_key = [] for i in range(1, len_key + 1): for combi in combinations(range(len_key), i): # 후보키가 될수 있는 key들의 전체 조합 temp = list() for r in relation: curr = [r[c] for c in combi] # 현재 후보키 조합에 해당하는 튜플 데이터 if curr in temp: # 유일성을 만족하지 않는 경우 break else: temp.append(curr) else: for c..
[프로그래머스] 오픈채팅방 - 파이썬(Python) def solution(record): answer = [] id_dict = dict() # id에 해당하는 이름 정보 commands = [list(r.split()) for r in record] # record의 데이터들을 공백 기준으로 분리 for command in commands: if command[0] == 'Enter' or command[0] == 'Change': # id에 해당하는 닉네임 정보 생성 혹은 업데이트 id_dict[command[1]] = command[2] for command in commands: if command[0] == 'Enter': answer.append(id_dict[command[1]] + "님이..