본문 바로가기

Algorithm/스택&큐&덱&힙32

[프로그래머스 lv 2] 큰 수 만들기 사용 언어 - Python3 문제 - 큰 수 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 스택 리스트의 pop, append 이용 1. 시간초과 오답 가능한 모든 조합을 구한후, 최대값 출력 from itertools import combinations def solution(number, k): result = list(combinations(list(number),len(list(number))-k)) lst = [] for.. 2023. 12. 19.
[프로그래머스] PCCP 모의고사 2회 3번 카페 확장 사용 언어 - Python3 문제 - 카페 확장 https://school.programmers.co.kr/learn/courses/15009/lessons/121689 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 큐 한사람씩 주문받으면서 시간 업데이트! 몇명이 대기중인지 확인한다. 1. 첫번째 시도 (오답) import heapq def solution(menu, order, k): heap = [] # 우선순위 큐 time = 0 total_time = 0 result = [] n = len(order) while order: answer = .. 2023. 12. 15.
[프로그래머스] PCCP 모의고사 2회 2번 신입사원 교육 사용 언어 - Python3 문제 - 신입사원 교육 https://school.programmers.co.kr/learn/courses/15009/lessons/121688 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 heapq 자동 정렬 기능 활용 시간초과 없이 구현하기가 포인트! 1. 첫번째 시도 (오답) 모든 테스트에서 시간초과 from itertools import combinations def solution(ability, number): idx = [i for i in range(len(ability))] # idx while numb.. 2023. 12. 15.
[프로그래머스] PCCP 모의고사 1회 4번 운영체제 사용 언어 - Python3 문제 - 운영체제 https://school.programmers.co.kr/learn/courses/15008/lessons/121686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 heapq 우선순위 큐 모든 부모들로 거슬러 올라가서 그 부모가 몇 번째 자식이었는지 확인 import heapq heap = [] 우선순위 큐를 통해 프로그램 대기 list를 만들어준다. 0. time = 0 에서 시작 1. 호출시간과 우선순위를 기준으로 정렬한다. 빨리 호출된 순서대로, 호출시간이 같다면 우선순위가 높은 순으로 1차 정.. 2023. 12. 14.
[프로그래머스] PCCP 모의고사 1회 3번 유전법칙 사용 언어 - Python3 문제 - 유전법칙 https://school.programmers.co.kr/learn/courses/15008/lessons/121685 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 규칙찾기! 스택 활용 모든 부모들로 거슬러 올라가서 그 부모가 몇 번째 자식이었는지 확인 (내 풀이) 해당 부모의 몇번째 자식인지 확인 (p-1)를 4로 나누면, 몫 = 몇번째 세대 / 나머지 = 몇번째 자식인지 확인 1. 인덱스를 맞춰주기 위해 p -= 1 2. n == 1 세대이면, 그냥 return 'Rr' 3. while n > 1.. 2023. 12. 14.
[프로그래머스 lv 3] 이중우선순위큐 사용 언어 - Python3 문제 - 이중우선순위큐 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 import heapq (정답 맞춘 여부 X) answer 정답을 입력할 리스트 heap = [] 빈 리스트에 push&pop 진행 oprations 한개씩 확인 빈칸을 기준으로 x와 num으로 split한다. 이때 num은 수치형으로 전환해준다. 만약 x 가 "I"라면, heap와 num을 heappush해준다. 만약 x가 "D"이고, num이 1이라면, heap 리스트에 값이 있다면, heap 리스트의 최대값을 계산해주고 그 값을 remove 제거해.. 2023. 6. 19.
[프로그래머스 lv 3] 디스크 컨트롤러 사용 언어 - Python3 문제 - 디스크 컨트롤러 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 import heapq (정답 맞춘 여부 X) answer = 0작업의 요청부터 종료까지 걸린 시간 now = 0 현재 시점 i = 0 jobs의 처리개수 저장하기 start = -1 시작시점 i heapq.heappush(heap, [j[1],j[0]]) : 자동 정렬.. 2023. 6. 19.
[프로그래머스 lv 2] 더 맵게 사용 언어 - Python3 문제 - 더 맵게 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 import heapq (정답 맞춘 여부 X) 1. 차례대로 힙에 삽입 heappush 2. heap[0] = 가장 작은 값이 K보다 클때까지 while문을 반복해준다. 3. 계산한 값 heappush로 삽입 가장 맵지 않은 음식의 스코빌 지수 heapq.heappop(heap) 두 번째로 맵지 않은 음식의 스코빌 지수 heapq.heappop(heap) 만약 리스트가 작아서 heappop()할 게 없어서 indexError가 난다면, -1을 return 한.. 2023. 6. 16.
우선순위 큐와 힙 나동빈 이코테 유튜브 강의 정리 https://www.youtube.com/watch?v=AjFlp951nz0&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=11 우선순위 큐(Priority Queue) 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 데이터를 우선순위에 따라 처리하고 싶을 때 사용 예시) 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건부터 꺼내서 확인해야 하는 경우 스택 - 가장 나중에 삽입된 데이터 큐 - 가장 먼저 삽입된 데이터 우선순위 큐 - 가장 우선순위가 높은 데이터 우선순위 큐 구현 방법 - 리스트 이용 리스트에 차례대로 뒷쪽에 연달아 넣은 후, 데이터를 꺼낼 때는 리스트에서 각각의 데이터 확인한 뒤에 가장 값이 큰 데이터를 .. 2023. 6. 16.
[프로그래머스 lv1] 햄버거 만들기 사용 언어 - Python3 문제 - 햄버거 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 스택 간단 활용 (정답 맞춘 여부 O) 문자열 삭제 del stack[-4:] def solution(ingredient): #1,2,3,1 빵, 야채, 고기, 빵 stack = [] ham = 0 for i in ingredient: stack.append(i) if stack[-4:] == [1,2,3,1]: ham += 1 del stack[-4:] return ham 레퍼런스 정답 깃허브 GitHub - yyeongeun/codingtest: 코.. 2023. 5. 10.