본문 바로가기

Algorithm/스택&큐&덱&힙32

[프로그래머스 lv 1] 카드 뭉치 사용 언어 - Python3 문제 - 카드 뭉치 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 큐를 활용 (정답 맞춘 여부 O) cards1과 cards2를 deque로 저장하여 맨 왼쪽 값과 값이 같을 경우, popleft()로 없애준다. 큐 값이 있을 경우에만 popleft()를 해줘야하기 때문에, if card1을 꼭 적어줘야한다 from collections import deque def solution(cards1, cards2, goal): card1 = deque(list(cards1)) card2 = deque(list(cards2)).. 2023. 4. 24.
[프로그래머스 lv1] 덧칠하기 사용 언어 - Python3 문제 - 덧칠하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 큐를 활용해서 리스트 안에서 인접한 두개의 값 비교하기 (정답 맞춘 여부 X) 1. deque(section) 2. 가장 왼쪽 값부터 없애주면서 start 3. start에서 m만큼 더한 값(페인트 롤러 범위) > section 리스트원소의 두번째 값(첫번째 값은 없어짐) section[0] 페인트 롤러 범위 안에 section 리스트 안 다른 원소도 포함되어 있다면 그 값도 없애준다. from collections import deque def soluti.. 2023. 4. 24.
[Python3] 백준 1544번 사이클 단어 사용 언어 - Python3 문제 - 사이클 단어 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 www.acmicpc.net 정답 큐를 활용한 구현 (정답 맞춘 여부 X) 1. 각 word를 deque로 저장해준다. picture -> p,i,c,t,u,r,e 2. dq.append(dq.popleft()) dq의 맨 왼쪽 값 p를 없애면서 가장 오른쪽에 append한다. i,c,t,u,r,e,p의 형태 각 원소를 합한 save값이 원래 값인 picture까지 한바퀴를 다 돌면 break save값이 word 리스트 안 다른 원소들에 속.. 2023. 4. 19.
[프로그래머스 lv 2] 주식가격 사용 언어 - Python3 문제 - 주식가격 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 for문 반복문 or 스택/큐 문제 (정답 맞춘 여부 X) 정답1 풀이 - 이중 반복문 1. answer = 0벡터 2. i = [0,1,2,3,4] / j = [1,2,3,4] 하나씩 값 비교하면서 answer[i] +=1 def solution(prices): answer = [0]*len(prices) for i in range(len(prices)): for j in range(i+1,len(prices)): if prices[i] 2023. 1. 26.
[프로그래머스 lv 2] 다리를 지나는 트럭 사용 언어 - Python3 문제 - 다리를 지나는 트럭 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 다리 위에 있는 트럭의 위치를 알아야하는 스택/큐 문제 (정답 맞춘 여부 X) 정답 풀이 - sum 연산은 O(N)으로 시간이 느리다. 한개의 테스트케이스에서 시간 초과로 오답! 1. 변수 정의 sec = 경과 시간 / q = bridge_length 다리길이만큼의 0 리스트 = 다리에 있는 트럭 입력받는 리스트 sec 경과시간은 한번 q.pop(0)로 리스트 맨 앞을 삭제한다. 2. 다리에 올라갈 수 있는 if문 현재 다리에 있는 트럭의 무게 합.. 2023. 1. 26.
[프로그래머스 lv 2] 프린터 사용 언어 - Python3 문제 - 프린터 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 인덱스와 원소를 함께 고려하는 큐 문제 (정답 맞춘 여부 X / 코드 풀이) 1. enumerate() 인덱스와 원소를 동시에 접근하여 큐를 만든다. priorities = [2,1,3,2] 인 경우, queue = [(0,2),(1,1),(2,3),(3,2)] 가 된다. 2.큐의 맨 왼쪽 값을 cur에 저장한다. cur = (0,2) 3.1. any() 사용하여 cur[1] < q[1]인 경우가 하나라도 있으면 cur를 큐에 append한다. 2보다 더 중요.. 2023. 1. 26.
[프로그래머스 lv 2] 올바른 괄호 사용 언어 - Python3 문제 - 올바른 괄호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 간단한 스택 문제 (정답 맞춘 여부 O / 코드 풀이) 앞서 백준 9012번을 풀었어서 쉽게 풀었다. [Python3] 백준 9012번 괄호 9012번: 괄호 (실버4, 스택) 문제 ★스택 문제★ 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르 rladuddms.tistory.com # 내 정답 def solution(s): .. 2023. 1. 25.
[프로그래머스 lv 2] 기능개발 사용 언어 - Python3 문제 - 기능개발 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 스택 문제 (정답 맞춘 여부 O / 코드 풀이) 100-progresses/speeds를 올림하여 finishday라는 리스트에 저장한다. 이때, 올림은 import math의 ceil 함수를 사용했다. 예) progresses = [93,30,55], speeds = [1,30,5]일 경우, finishday = [7,3,9]가 된다. 첫번째 finishday[0]을 먼저 stack 에 넣어준다. finishday[1]부터 max(stack)과 비교해준다... 2023. 1. 25.
[프로그래머스 lv 1] 같은 숫자는 싫어 사용 언어 - Python3 문제 - 같은 숫자는 싫어 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 스택/큐 문제 (정답 맞춘 여부 O / 코드 풀이) answer에 arr의 첫번째 값을 먼저 append해준다. arr의 두번째 값부터 앞서 저장된 answer의 마지막 값과 비교해주면서 answer에 append한다. # 내 정답 def solution(arr): answer = [] answer.append(arr[0]) for num in arr[1:]: if answer[-1] != num: answer.append(num) return an.. 2023. 1. 25.
[백준] 5430번 AC 사용 언어 - Python3 5430번: 덱 (골드5, 큐) 문제 ★큐 문제★ 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 정답 큐 reverse 처리하기 (코드 풀이) 1. 입력 형태 주의하기 input 형태가 [1,2,3,4]이다. 우리는 deque의 입력값으로 '1','2','3','4'를 넣기 위해 데이터를 가공해줘야한다. 앞과 끝의 대괄호 []는 없애고, 컴마(,)로 split하여 인식하여 deque의 입력값을 넣어준다. 2. 시간복잡도 reverse 해결하기 R 함수는 전체 큐를 q.reverse() 해야하기 때문에 시간 초과된다. reverse 해주.. 2023. 1. 22.