목록 code review/stack-queue (8)
KEEP GOING
https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr [효율성에서 실패한 코드] 문제를 보자마자 백트래킹이 생각나서 백트래킹으로 풀어봤다. 자리수를 기준으로 [1,2,4] 배열에 접근하는 방법을 떠올렸다. 자리수가 1일 때 [1], [2], [4] 자리수가 2일 때 [1,1], [1,2], [1,4], [2,1], [2,2], [2,4], [4,1], ]4,2], [4,4]에 접근한다. 이렇게 쭉 찾다가 우리가 원하는 n에 대응하는 124숫자를 발견하면 if num == targetN: check 변수를 통해 탐색을 종료하는 방식으로 구현해봤다. 하지만 정확성 부분에서는 모두 정답 처리..
https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 1. 코드 구현 from collections import deque def solution(priorities, location): n = len(priorities) que = deque([]) # 큐에 (인덱스, 문서별 중요도) 추가 for i in range(n): que.append((i, priorities[i])) # 가장 높은 우선순위 high_pri..
https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 1. stack 구현 from math import ceil def solution(progresses, speeds): answer = [] stack = [] # # n일간 작업에 대한 데이터 리스트를 stack에 추가 for progress, speed in zip(progresses, speeds): stack.app..
https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 1. 성공한 코드 def solution(s): n = len(s) result = 1 answer = 0 # stack 생성 stack = [] for i in range(n): if s[i] == '(': stack.append('(') result *= 2 elif s[i] == ')': # s[i-1] -> stack[-1]로 구현 # 위치를 바꾸어 구현하면 indexError 발생 ☆ ..
1. 코드 구현 n = int(input()) postfix = input() operator = ['*', '-', '+', '/'] stack = [] numbers = dict() for i in range(n): number = input() for data in postfix: if data == chr(i+65): numbers[data] = number for data in postfix: # data가 문자라면 ex A, B, C, D, ... if data not in operator: stack.append(data) else: w2 = stack.pop() w1 = stack.pop() if 'A'
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 1. 코드 구현 q = deque([i+1 for i in range(int(input()))]) while q: for i in range(2): a = q.popleft() if not q: print(a) break if i == 1: q.append(a) 2. 코드 구현 (숏코딩) n,m = int(input()), 1 while m
https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 1. 코드 구현 import sys import heapq n = int(sys.stdin.readline()) h = [] for _ in range(n): data = int(sys.stdin.readline()) if data != 0: heapq.heappush(h,(abs(data),data)) else: if not h: print(0) else: print(hea..
https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 문제 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를..