Python 48

[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를..

십진수에서 이진수로 바꾸는 python코드 [이진수출력]

먼서 십진수에서 이진수로 바꾸려면 이런 과정을 거친다. 0이 나올 때까지 2로 나누면 된다. 그리고 나머지를 끝에부터 적으면 그것이 바로 이진수다. 스택을 그려 이해해보면 이와 같다. dfs(x//2)가 5번째 줄이라고 하면 D(11)부터 계속해서 5번째 줄로 인해 2로 나눈 몫으로 DFS함수를 호출한다. 그리고 끝내 몫이 0이 나온다. 그러면 그때의 나머지 부터 차례대로 출력하면 된다. 이것을 재귀를 사용해 python 코드로 바꾸면 다음과 같다. def dfs(x) : if x == 0 : return else : dfs(x//2) print(x%2,end='') if __name__=="__main__" : n = int(input()) dfs(n) dfs를 이용해 구현할 수 있다.

[Python]입력속도 향상 방법(readline)

대량의 입력을 받을 때 입력속도를 빠르게 하기위해서는 import sys input = sys.stdin.readline 위 코드처럼 해주면 된다. input을 평소와 같이 사용하면서 입력속도를 높일수있다. 다만 문자열을 읽을 때 개행문자까지 읽어오는 문제가 있다. 문자열을 입력할 때는 rstip()함수를 붙여주어 개행문자를 없애줘야 원하던 입력이 된다. s = input().rstrip()