- 오늘의 학습 키워드 : 큐
- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 공부한 내용 본인의 언어로 정리하기
from collections import deque
def solution(priorities, location): #priorities : 우선순위, location : 얘가들어왔을때
answer = 0
#큐는 선입선출 먼저들어온게 먼저나가요
#deque라는 개념 :(우선순위,인덱스)
queue = deque([(priority, idx) for idx, priority in enumerate(priorities)])
#while문쓰기(for보다 더 적합)
while queue:
#맨왼쪽을 삭제 후 반환
current = queue.popleft()
#any() 하나라도 True이면 True:
#all() 모두 T이면 T
# 현재보다 더 우선순위 큰게 있는지 확인
if any(current[0] < q[0] for q in queue):
#있으면 뒤로 추가
queue.append(current)
else: #우선순위 없다면
answer += 1
#만약 현재가 목표 로케이트이면, 0:우선순위 1:인덱스 튜플이라
if current[1] == location:
return answer
return answer
- 회고록:
* 큐는 선입선출(FIFO)의 구조를 가진다.
* 큐를 풀떄는 deque를 사용하면 편리하다. 참고로 deque를 사용하려면 import collections from deque를 선언해야한다.
deque는 스택에도 쓰이고, queue에도 쓰이는데 출입구를 양쪽으로 갖고있다.
여기서 쓰인 메소드는
1) appendleft() : 왼쪽에 삽입
2) pop : 오른쪽 배출
3) append() : 삽입
4) popleft() : 왼쪽에 있는거 삭제 후 반환(리턴)
* 우선순위 고려할때
deque([(priority, idx) for idx, priority in enumerate(priorities)]) 를 사용했는데,
(우선순위, 인덱스) 형태로 저장하는 튜플이다.
print(queue) # deque([(2, 0), (1, 1), (3, 2), (2, 3)]) 이런식으로 저장된다.
------(튜플의 정의는 이 링크로)-------
02-4 튜플 자료형
튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다. * 리스트는 [], 튜플은 ()으로 둘러싼다. * 리스트는 요솟값의 생성, …
wikidocs.net
-------------------------------------
* while or for:
어떤 조건문을 사용해야되는지 고민했는데 반복의 횟수가 정해져있지 않기때문에, 이경우에는 while을 사용하는게
더 바람직했다.
* if current[1] == location: return answer
왜 current[1]을 한걸까?에 대한 답은
아까튜플로 저장했던것을 기억해보면 (우선순위, 인덱스)의 형태로 저장했는데, [0]은 우선순위이고, [1]은 인덱스인거다.
근데 우리는 인덱스를 기준으로 로케이션이랑(위치) 같다면, 그게 우리가 찾는 문서라는거니까
저런 조건문을 넣어주었다.
오늘 문제 어려운데 왜 재밌지 미쳐가나?
'이직하고만다(분노)' 카테고리의 다른 글
99클럽 코테 스터디 30일차 TIL + 프로그래머스 이분탐색 (0) | 2024.08.20 |
---|---|
99클럽 코테 스터디 29일차 TIL + 프로그래머스 이분탐색 (0) | 2024.08.19 |
99클럽 코테 스터디 27일차 TIL + 프로그래머스 시뮬레이션 (0) | 2024.08.18 |
99클럽 코테 스터디 26일차 TIL + 프로그래머스 시뮬레이션 (0) | 2024.08.16 |
99클럽 코테 스터디 25일차 TIL + 리트코드 그래프 (0) | 2024.08.15 |