
빙글빙글 : )
금요일 같은 목요일.
SQL
# 쿼리를 있는 그대로 작성했을 경우,
SELECT C.COMPANY_CODE,
C.FOUNDER,
COALESCE(LM.TOTAL_LEAD_MANAGERS, 0) TOTAL_LEAD_MANAGERS,
COALESCE(SM.TOTAL_SENIOR_MANAGERS, 0) TOTAL_SENIOR_MANAGERS,
COALESCE(M.TOTAL_MANAGERS, 0) TOTAL_MANAGERS,
COALESCE(E.TOTAL_EMPLOYEES, 0) TOTAL_EMPLOYEES
FROM COMPANY C LEFT JOIN
(
SELECT COMPANY_CODE,
COUNT(DISTINCT LEAD_MANAGER_CODE) AS TOTAL_LEAD_MANAGERS
FROM LEAD_MANAGER
GROUP BY COMPANY_CODE
) LM ON C.COMPANY_CODE = LM.COMPANY_CODE
LEFT JOIN
(
SELECT COMPANY_CODE,
COUNT(DISTINCT SENIOR_MANAGER_CODE) AS TOTAL_SENIOR_MANAGERS
FROM SENIOR_MANAGER
GROUP BY COMPANY_CODE
) SM ON C.COMPANY_CODE = SM.COMPANY_CODE
LEFT JOIN
(
SELECT COMPANY_CODE,
COUNT(DISTINCT MANAGER_CODE) AS TOTAL_MANAGERS
FROM MANAGER
GROUP BY COMPANY_CODE
) M ON C.COMPANY_CODE = M.COMPANY_CODE
LEFT JOIN
(
SELECT COMPANY_CODE,
COUNT(DISTINCT EMPLOYEE_CODE) AS TOTAL_EMPLOYEES
FROM EMPLOYEE
GROUP BY COMPANY_CODE
) E ON C.COMPANY_CODE = E.COMPANY_CODE
ORDER BY C.COMPANY_CODE
# 전체 테이블을 확인하고 필요한 부분에 LEFT JOIN, GROUP BY 활용
SELECT C.COMPANY_CODE,
C.FOUNDER,
COUNT(DISTINCT LEAD_MANAGER_CODE),
COUNT(DISTINCT SENIOR_MANAGER_CODE),
COUNT(DISTINCT MANAGER_CODE),
COUNT(DISTINCT EMPLOYEE_CODE)
FROM EMPLOYEE E LEFT JOIN COMPANY C
ON E.COMPANY_CODE=C.COMPANY_CODE
GROUP BY COMPANY_CODE, FOUNDER
ORDER BY COMPANY_CODE
deque() 활용하기from collections import deque
def solution(bridge_length, weight, truck_weights):
# 대기 트럭 큐 생성
waiting_trucks = deque(truck_weights)
# 다리 위 트럭 큐 초기화
bridge = deque()
# 경과 시간 초기화
time = 0
# 현재 다리 위 트럭들의 총 무게 초기화
current_bridge_weight = 0
# 대기 트럭이나 다리 위 트럭이 있는 동안 반복
while waiting_trucks or bridge:
time += 1 # 반복 1회마다 1초씩 시간 증가
# 다리를 다 건넌 트럭이 있는지 확인
if bridge and bridge[0][1] == bridge_length:
truck_weight, truck_position = bridge.popleft() # 다리에서 트럭 제거
current_bridge_weight -= truck_weight # 현재 다리 무게에서 제거된 트럭 무게 빼기
# 새로운 트럭이 다리에 올라갈 수 있는지 확인
if waiting_trucks and current_bridge_weight + waiting_trucks[0] <= weight:
truck_weight = waiting_trucks.popleft() # 대기 트럭에서 트럭 하나 제거
bridge.append((truck_weight, 0)) # 다리에 트럭 추가 (무게, 위치 초기화)
current_bridge_weight += truck_weight # 현재 다리 무게에 추가된 트럭 무게 더하기
# 다리 위 모든 트럭의 위치 업데이트
for i in range(len(bridge)):
truck_weight, truck_position = bridge[i]
bridge[i] = (truck_weight, truck_position + 1) # 트럭 위치 1 증가
return time # 모든 트럭이 다리를 건넌 시간 반환
웹으로 하다 안돼서 결국 설치ㅋㅋ
오늘의 한 줄.
하나씩 차분하게 !