[1차] 셔틀버스

def solution(n, t, m, timetable):
    answer = ''
    time = []
    bus = []
    for i in timetable:
        hour = int(i[:2])
        minu = int(i[3:])
        time.append(hour*60 + minu)
    time.sort()
    
    for i in range(n):
        now = 540+i*t
        bus.append(now)
        
    i = 0   #다음 버스에 오를 크루 인덱스
    for tm in bus:
        cnt = 0   # 버스에 타는 크루 수
        while cnt < m and i < len(time) and time[i] <= tm:
            i += 1
            cnt += 1
        # 버스에 자리가 남았을 경우
        if cnt < m: 
            answer = tm
        # 버스에 자리가 없는 경우 맨 마지막 크루보다 1분 먼저 도착
        else: 
            answer = time[i - 1] - 1
    

    hour = answer //60
    minutes = answer % 60

    if hour < 10 :
        if minutes < 10 :
            answer = "0" + str(hour) + ":" + "0" + str(minutes)
        else : 
            answer = "0" + str(hour) + ":" + str(minutes)
    else :
        if minutes < 10 :
            answer = str(hour) + ":" + "0" + str(minutes)
        else :
            answer = str(hour) + ":" + str(minutes)
    
    return answer

전력망을 둘로 나누기

from collections import deque
def solution(n, wires):
    res = 0
    graph = [[] for _ in range(n+1)]
    for a,b in wires:
        graph[a].append(b)
        graph[b].append(a)
    
    def bfs(start):
        visited = [0] * (n+1)
        q = deque([start])
        visited[start] = 1
        cnt = 1
        while q:
            s = q.popleft()
            for i in graph[s]:
                if not visited[i]:
                    q.append(i)
                    visited[i] = 1
                    cnt += 1
        return cnt
            
    res = n
    for a,b in wires:
        #graph에서 remove
        graph[a].remove(b)
        graph[b].remove(a)
        
        res = min(abs(bfs(a) - bfs(b)), res)
        
        #다시 append
        graph[a].append(b)
        graph[b].append(a)
    
    return res

올바른 괄호

#시간초과
def solution(s):
    arr = []
    for i in s:
        if i == '(':
            arr.append(i)
        else :
            try :
                if arr[-1] == '(':
                    arr.pop(0)
            except:
                return False
    if len(arr) == 0:
        return True
    else :
        return False
#정답코드
def solution(s):
    check = 0
    for i in s:
        if i == '(':
            check += 1
        else :
            if check > 0:
                check -= 1
            else:
                return False
    if check > 0:
        return False
    return True