본문 바로가기

전체 글

(171)
[프로그래머스][Python] 기능개발 문제를 정리해보자. 1. 각 기능은 진도가 100%일 때, 서비스에 반영한다. 2. 각 기능의 개발 속도는 모두 다르다. 3. 뒤에 개발이 먼저 완료되어도, 앞에 기능이 배포될 때 함께 배포해야 한다. 배포 순서대로 작업 진도 적힌 배열 : progresses 각 작업의 개발 속도 적힌 배열 : speeds 문제는 '배포마다 몇 개의 기능이 배포되는지' 찾는 것이다. def solution(progresses, speeds): answer = [] while progresses: progresses = list(map(lambda x1, x2: x1 + x2, progresses, speeds)) result = 0 while progresses: if 100
[프로그래머스][Python] 베스트앨범 문제를 정리해보자. 노래를 수록해야 한다. 그 기준은 아래와 같다. 1. 속한 노래가 많이 재생된 장르를 먼저 수록한다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록한다. (재생 횟수가 같다면? 고유 번호가 낮은 노래를 먼저 수록한다.) 1번과 2번을 위한 딕셔너리를 각각 만들었다. 전자는 genres_sum, 후자는 genres_two_plays. 1번은 각 장르의 노래 재생 수를 다 더하면 된다. 2번은 조건문을 이용했다. 아래 예시로 설명하겠다. classic은 500, 150, 800을 가지고 있다. 그리고 pop은 600, 2500을 가지고 있다. classic은 800, 500, 150 순서가 되어야하고, 2개만 선택해야 하니까 800, 500만 남아야 한다. 따라서 재생 수가 높은 순으로..
[프로그래머스][Python] 위장 조합을 이용했다. (조합은 서로 다른 n개에서 순서에 상관없이 r개를 선택하는 것이다.) 예를 들어보자. 2개의 모자 종류와 1개의 안경은 종류가 있다. 아래와 같이 경우의 수를 구할 수 있다. 문제에서 '스파이는 하루에 최소한 한 개의 의상은 입습니다'라고 했다. 따라서 아무것도 안 입는 경우를 제외시켜야 한다. 빨간색으로 표시한 부분이 그 부분이다. (Π (의상 종류 + 1)) - 1 식은 이와 같다. def solution(clothes): dic = {} for li in clothes: c, k = li if dic.get(k, 0): dic[k] += 1 else: dic[k] = 2 answer = 1 for val in dic: answer *= dic[val] return answer -..