[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