7월 3주차 - syh39/ProblemSolving GitHub Wiki

오픈채팅방

def solution(record):
    users = {}
    log = []
    result = []
    for r in record:
        splited = r.split(" ")
        if len(splited) == 3:
            users[splited[1]] = splited[2]
        log.append([splited[0], splited[1]])
    
    for cmd, uid in log:
        if cmd == "Enter":
            result.append(users[uid]+"님이 들어왔습니다.")
        if cmd == "Leave":
            result.append(users[uid]+"님이 나갔습니다.")
            
    return result

디스크 컨트롤러

  • 출처: 힙(Heap)
  • 난이도 : Level 3
  • 풀이 여부 : Y
  • 소요 시간 : 60분
  • 유형 : 구현
import heapq
from collections import deque

def solution(jobs):
    length = len(jobs)
    cur_time = -1
    job_time = 0
    result = []
    q = []
    i = 0
    while i < length:
        if q:
            f, s = heapq.heappop(q)

            #일을 하는 동안에 일어나는 일 처리
            while True:
                if job_time == f:
                    i += 1
                    job_time = 0
                    result.append(cur_time - s)
                    break
                cur_time += 1
                job_time += 1
                for j in jobs:
                    if j[0] == cur_time:
                        new_s, new_f = j[0], j[1]
                        heapq.heappush(q, (new_f, new_s))
        else:
            cur_time += 1
            for j in jobs:
                if j[0] == cur_time:
                    new_s, new_f = j[0], j[1]
                    heapq.heappush(q, (new_f, new_s))

    return sum(result)//length