Data Structure 24

[소프티어 6289번] 우물 안 개구리

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# 헬스장에서 N명의 회원이 운동을 하고 있음# 각 회원은 1부터 N사이의 번호가 부여# i번 회원이 들 수 있는 역기의 무게는 Wi# 회원들 사이에는 M개의 친분 관계 (Aj, Bj)가 있음 (Aj와 Bj가 친분관계)# i번 회원은 자신과 친분 관계가 있는 다른 회원들보다 들 수 있는 # 역기의 무게가 무거우면 자신이 최고라고 생각# 단, 누구와도 친분이 없는 멤버는 본인이 최고라고 생각N, M = map(int,input().split())weights = [0] + list(map(int,input().split()))graph = [[] for _ in range(N..

[소프티어 6270번] GBC

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 이번 문제는 총 100m의 'N개의 구간 및 제한 속도'와 'M개의 테스트 구간 및 속도'가 주어졌을 때 테스트한 구간의 속도를 기준으로 가장 크게 제한 속도를 넘어간 값을 구하는 문제이다. 본 문제를 해결하기 위해서 모든 구간과 속도를 Queue에 담고(시간복잡도를 최소화하기 위해 deque 사용), 구간의 길이에 따라 경우를 나눠서 분기처리 해주었다.

[면접을 위한 CS 전공지식 노트] 5-2 선형 자료구조 / 비선형 자료구조

1. 선형 자료구조 선형 자료구조란 요소가 일렬로 나열되어 있는 자료구조를 의미한다. 1-1. 연결 리스트 연결리스트란 ? 데이터를 감싼 노드를 포인터(Pointer)로 연결해서 공간 효율성을 극대화시킨 자료구조 삽입과 삭제가 O(1)이 걸리며, 탐색에는 O(n)이 걸린다. 싱글 연결 리스트 이중 연결 리스트 원형 이중 연결 리스트 1-2. 배열 배열이란 ? 여러 개의 데이터를 연속적인 공간에 저장한 자료구조 삽입과 삭제에는 O(n)이 걸리지만, 탐색에는 O(1)이 걸린다. 👉🏻 따라서 데이터 추가와 삭제가 많은 경우에는 '연결 리스트'를, 탐색을 많이 하는 경우에는 '배열'을 사용하는 것이 좋다. 1-3. 스택 스택이란 ? 마지막에 들어간 데이터가 가장 먼저 나오는 후입선출(LIFO) 구조을 가진 자료..

Data Structure 2023.11.26

[프로그래머스 PCCP 모의고사 3번] 카페 확장

from collections import deque def solution(menu, order, k): answer = 0 queue = deque() for i in order: queue.append(menu[i]) answer = max(answer,len(queue)) time = k while queue: # queue[0]과 time을 비교(걸리는 시간과 남은 시간) if queue[0] time: queue[0] -= time break else: queue.popleft() break return answer 이번 문제는 Queue 자료구조를 사용하여 푸는 문제인데 문제의 조건이 조금 ..

[프로그래머스 PCCP 모의고사 2번] 신입사원 교육

import heapq def solution(ability,number): # 신입사원 2명 선발, 선발 후 같이 공부시킴 # 모든 신입사원의 능력치는 정수로 표현 # 2명이 같이 공부하면 서로의 능력을 흡수하여 두 신입사원의 능력치는 # '공부하기 전 두 사람의 능력치의 합'이 됨 # 교육 후 모든 신입사원의 능력치의 합을 최소화 # 최솟값을 pop하는 시간복잡도를 최소화 하기위해 heapq 사용 q = [] for item in ability: heapq.heappush(q,item) for i in range(number): a = heapq.heappop(q) b = heapq.heappop(q) heapq.heappush(q,a+b) heapq.heappush(q,a+b) return sum(q)

Data Structure/Heap 2023.11.11

[백준 1406번] 에디터

1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net import sys input = sys.stdin.readline string = list(input().rstrip()) m = int(input().rstrip()) command_list = [tuple(input().rstrip().split()) for _ in range(m)] stack = [] for command in command_list: if len(command) == 1: # L / D / B인 경우 if command[0] == 'L'..

[백준 9935번] 문자열 폭발

9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net string = list(input()) boom = input() boom_length = len(boom) stack = [] for i,value in enumerate(string): stack.append(value) if value == boom[-1] and len(stack) >= boom_length: if ''.join(stack[-boom_length:]) == boom: for j in range(boom_length): st..

[백준 2812번] 크게 만들기

2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net n, k = map(int,input().split()) number = list(input()) stack = [] for i in range(n): while stack and number[i] > stack[-1] and k > 0: # 현재 숫자가 stack에 있는 숫자보다 크면 stack.pop() # 가장 큰 숫자를 앞 쪽에 위치시키기 위함 ! # k개 까지만 지워야 하므로 k > 0이상일 때만 수행 stack.pop() k -= 1 stack.append(number[i]) # 만일 k개 미만으로 숫자를 지웠다면 뒤에 있는 숫..

[백준 2504번] 괄호의 값

2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net string = list(input()) stack =[] expression = "" for i,value in enumerate(string): if not (value == '(' or value == ')' or value=='[' or value == ']'): # 괄호나 대괄호가 아닌 경우 예외처리 print(0) exit(0) if value == '(' or value == '[': # 여는 괄호일 경우 스택에 넣고 표현식 열기 stack.a..

[백준 10799번] 쇠막대기

10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net # 괄호가 쌍을 이뤄서 pop될 때마다 +1 # 레이저인 경우 +현재 스택에 쌓인 개수 datas = list(input()) stack = [] answer = 0 for i,data in enumerate(datas): if data == '(': stack.append(data) elif data == ')': if datas[i-1] == '(': # 레이저인 경우 answer += (len(stack)-1) stack.pop() else: # 막대기가 끝난 경우 a..