def solution(priorities,location): queue = [(i,p) for i,p in enumerate(priorities)] print("queue",queue) #리스트에 우선순위와 인덱스를 튜플로 묶어 저장함 answer = 0 #특정 작업이 몇번째로 저장되는지 저장하는 변수 #무한 루프 while True: #가장 먼저 시작 되는 작업을 빼서 cur에 저장함 #실행 대기 큐에서 대기 중인 프로세스를 하나 꺼냄 cur = queue.pop(0) print("cur",cur) # 큐에 대기 중인 프로세스 중 우선 순위가 더 높은 프로세스가 있다면 # 하나라도 q[1]가 더 크다면 if any(cur[1] < q[1] for q in queue): queue.append(cur)..
데크(Deque) 우선순위 큐(Priority Queue) 스택과 큐의 특징을 모두 가지고 있는 복합 자료형으로 양쪽에서 삭제와 삽입을 모두 처리할 수 있음 이중 연결 리스트(가장 좋음), 배열, 연결 리스트로 구현 가능 어떤 특정 조건에 따라 우선 순위가 가장 높은 요소가 추출되는 자료형 -> 정렬 알고리즘을 기반으로 함 ex. 가장 큰 값을 추출하는 최댓값 추출 기본 리스트 자료형의 경우, 맨 뒤쪽 원소를 기준으로 삽입, 삭제를 수행하기 때문에 연산 리스트에 포함된 데이터의 수에 따라 시간 복잡도가 O(N)임 * append(), pop() deque에서는 리스트 자료형과 다르게 인덱싱, 슬라이싱 등의 기능은 사용할 수 없지만 연속적으로 나열된 데이터의 시작 혹은 끝부분에 데이터 삽입 및 삭제 시 매..
def solution(ingredient): answer = 0 # 햄버거의 개수 h = [] # 햄버거 재료 배열 for i in ingredient: h.append(i) # 재료를 햄버거 배열에 추가 #print(h) if h[-4:]==[1,2,3,1]: answer+=1 #햄버거의 개수 추가 for j in range(4): h.pop() #원소 4개 제외 #print(h) return answer print(solution([2, 1, 1, 2, 3, 1, 2, 3, 1])) https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을..
def solution(arr): answer = [] #음수를 우선 할당하여 첫번째 요소가 무조건 추가되도록 함 last =-1 for a in arr: #이전 값과 같지 않을 때만 a를 추가함 if a != last: answer.append(a) #다음 비교를 위해 값을 last 에 넣어줌 last=a return answer print(solution([1,1,2,3,1])) https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr
스택(Stack) 큐(Queue) LIFO(Last-in-First-Out) 마지막에 들어온 원소부터 반환함 -> 쌓인 접시를 생각해보자 FIFO(First-in-First-Out) 첫번째로 들어온 원소를 첫번째로 반환함 -> 줄서기 push() : 요소를 컬렉션에 추가함 pop() :아직 제거 되지 않은 가장 최근에 삽입된 요소를 제거함 데크(Deque)나 우선순위 큐(Priority Queue) 같은 변형이 존재함 너비 우선 탐색(Breadth-First Search)이나 캐시 구현에 사용 리스트는 스택과 큐의 모든 연산을 지원함. 다만, 리스트는 동적 배열로 구성되어 있어 큐의 연산을 수행하기에 효율적이지 않기 때문에 큐는 데크(Deque)라는 별도의 자료형을 사용하는 것이 좋은 성능을 낼 수 있음..
* 해당 내용은 '딥러닝 파이토치 교과서' 를 개인 공부 목적으로 정리한 것임 모델 학습 모델을 학습 시킨다는 것은 입력값 x, 출력값 y 가 만약 y = wx+b 라는 관계식(함수)을 가진다면 loss가 최솟값을 갖도록 하는 가중치(w) 및 편향(b)의 값을 찾아 나가는 과정을 의미한다. 먼저 w,b에 임의의 값을 적용한 뒤 오차(실제값과 예측값의 차이)가 서서히 줄어들어 전역 최소점에 이를 때까지 파라미터(w,b)를 계속 수정한다. 학습 과정은 다음과 같다. 1. optimizer.zero_grad() 기울기 초기화 메서드 새로운 기울기 값을 이전 기울기 값에 누적하여 계산하는 것은 RNN(순환 신경망) 모델을 구현할 때는 효과적이나 누적 계산이 필요하지 않는 모델인 경우 불필요함. ..