알고리즘/프로그래머스문제풀이 69

[Python/프로그래머스]가장 큰 수_정렬

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 쉬워보였다. 그러나 10과 4중 4를 먼저가도록 만들어야하는데 그 방법을 모르겠다. 그래서 답을 찾아봤다. 신박하게 문자열 *를 이용해 늘려서 비교한다. 큰 문자부터 써야하므로 reverse = True이다. 숫자를 문자로 바꾼 후 그 문자를 ASCII 값으로 치환되어 정렬한다. 숫자들이 str형태..

[Python/프로그래머스]k번째 수_정렬

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 레벨 1이라 그런지 빠르게 혼자 풀었다. 내가 작성한 코드 : def solution(array, commands): answer = [] for com in commands : start = com[0] end = com[1] tmp_arr = array[start-1:end] tmp_arr.sort() answer.append(tmp_arr[com[2]-1]) return answer

[프로그래머스/PYHTON]이중우선순위 큐_힙(heap)

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이법 : 1. 띄어쓰기를 기준으로 나눈다. 2- 1. I 라면 Insert 2- 2. D라면 Delete 2-2-1 : 만약 아무것도 없다면 pass!! (pop할 숫자가 없으므로) 2-2-1 : 1 이라면 최댓값 pop ( nlargest 이용) 2-2-2 : 최솟값 pop 3. heap이 비었다면 [0,0]을 , 비어있지 않다면 max, min값을 answer에 넣는다. 코드 : import heapq def solution(operations): heap = [] # heap answer = [] for i in operations..

[PYTHON][프로그래머스]디스크 컨트롤러_힙

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 이 문제 어디선가 푼적이 있는것 같다. 뭔가 그리디 하면서 비슷한것을 본것같은데 못풀었다... 백준 회의실..? 이 문제를 푸는 방법은 그 기간에서 할 수 있는 작업 중 소요시간이 가장 짧은 것을 먼저 실행하면 된다. 그러기위해 heappush할 때 [1][0]으로 넣어주는 것을 기억해야한다. 왜냐하면 소요시간이 짧은 순으로 먼저 나와야하기 때문이다. 코드..

[python][프로그래머스]더 맵게_힙(heap)

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 생각해야하는 것 : heapify를 통해 최소힙으로 만들어 준 후 해야한다. 정답 코드[블로그 참조] : import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) # scoville을 최소 힙화 한다 # 처음 주어질 때는 heap 순서가 아니므로 while scoville[..

[python][프로그래머스]주식가격_스택/큐

문제 : https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 답을 찾아본 코드 [deque이용] : from collections import deque def solution(prices): answer = [] d = deque(prices) while d : tmp = d.popleft(..

[python][프로그래머스] 다리를 지나는 트럭_스택/큐

https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 1. 다리의 길이만큼 리스트를 만든다. 2. 다리의 왼쪽이 빠진다. 3. 건널 트럭이 남았다면 3-1. if ( 트럭이 갈수있다면) #이미 다리에 있는 트럭과 새로 갈 트럭의 무게가 weight보다 작다면 트럭 리스트에서 빼서 다리 리스트에 넣는다. 3-2. else : # 갈수가 없다면..

[python][프로그래머스]프린터_스택/큐

이 문제는 이해하기 쉬운 문제이다. 어디서 많이 본 문제인데 혼자 못풀었다... 문제에 주어진 순서의 숫자가 언제 출력된가를 return하는 문제다. 주어진 순서를 어떻게 기억할 수 있을까 고민했는데 enumerate를 이용해 쌍으로 만드는 방법이었다. 이 코드가 참 파이써닉하다. 내가 스스로 만들어낼수있도록 친숙해지고싶다. 이 코드는 사실 d = deque for i, v in enumerate(priorities) : d.append([v,i]) 와 같이 3줄로 만들 수 있다. 하지만 d = deque ( [ ( v,i ) for i,v in enumerate(priorities) ] ) 이렇게 한줄로 만들 수 있다. 코드 : def solution(priorities, location): answe..

[python][프로그래머스]기능개발_[스택/큐]

프로그래머스의 고득점 kit 의 스택/큐의 첫번째 문제이다. 문제 : 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 문제를 이해하는 것도 꽤 시간이 걸렸다. 처음에는 정직하게 (바보같이) progress에서 speeds를..