Programming/Programmers (40) 썸네일형 리스트형 [프로그래머스/Python] 문자열 압축(중복체크/반복문) 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 1. 잘라놓고 비교 def text_coding(s, num): output = len(s) datalist = list(map(''.join, zip(*[iter(s)]*num))) datalist.append('A') #dummy prev = datalist[0] cnt = 0 for i in datalist: if prev == i: cnt += 1 else: if cnt >= 2: output = output - num*cnt + len(str(cn.. [프로그래머스/Python] 짝지어 제거하기(스택) 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 다 제거될 때까지 반복하는게 아니고 한번에 제거해야 시간초과가 나지 않는다. def solution(s): answer = 0 tmp = [] for i in s: if tmp and tmp[-1] == i: tmp.pop() else: tmp.append(i) return int(len(tmp) == 0) 시간초과 나는 코드 def solution(s): while True: if len(s)==0: return 1 prev = "" new_s =.. [프로그래머스/Python] 구명보트(그리디) 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr from collections import deque def solution(people, limit): answer = 0 people.sort() people = deque(people) while people: max_weight = people.pop() if people and max_weight + people[0] [프로그래머스/Python] 소수찾기(완전탐색) 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr from itertools import permutations def isPrime(n, dp): max_length = int(n**0.5) for i in range(2, max_length+1): if dp[i] == True: for j in range(i*i, n+1, i): dp[j] = False return dp def solution(numbers): answer = 0 a = [] for i in range(1,len(number.. [프로그래머스/Python] 괄호변환(재귀/구현) 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴 programmers.co.kr def isRight(u): tmp = [] for i in u: if i == '(': tmp.append(i) if tmp and i == ')': tmp.pop() if len(tmp) == 0: return True else: return False def splitstr(w): cnt = [0,0] for idx, char in enumerate(w): if char == '(': cnt[0]+=1 if char == ')': cnt[1]+=1 if cn.. [프로그래머스/Python] 기능개발(큐) 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr def solution(progresses, speeds): answer = [] while progresses: #업데이트 for i in range(len(progresses)): progresses[i] += speeds[i] # 만약 첫번째꺼가 완료되면 완료된 애들 뺀다. if progresses[0] >= 100: cnt = 0 while progresses: if progresses[0] >= 100: progresses.pop(0) speed.. [프로그래머스/Python] 주식가격(스택) 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 1. 이중 for문 현시점 이후의 가격을 다 살펴봐야 되므로 O(n^2)의 효율성을 보인다. def solution(prices): answer = [] for i in range(len(prices)): cnt = 0 for j in range(i+1, len(prices)): if prices[i] > prices[j]: cnt+=1 break else: cnt += 1 answer.append(cnt) return .. [프로그래머스/Python] 프린터(큐) 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr idx를 가지고 다니는 방식으로 작성했다. from collections import deque def solution(priorities, location): answer = 0 q = deque() for idx, paper in enumerate(priorities): q.append([paper, idx]) while q: cur = q.popleft() paper, idx = cur[0], cur[1] #우선순위 체크 flag = 1 for i in q: .. 이전 1 2 3 4 5 다음