코딩테스트 연습 - [1차] 셔틀버스 | 프로그래머스 스쿨 (programmers.co.kr)
* 2차원 리스트 할당
#2차원배열 할당
bus=[]
for i in range(n):
bus.append([])
☆ 팁 : 먼저태우고, 내가들어갈자리를 고른다.
* 의사코드
1. 분으로변환, 정렬
2. 버스에태우기 //버스리스트=[[08:00,09:00],[09:10]]
3. 막차full -> 빨리나와야함 -> 마지막버스 마지막사람보다 1분빨리
막차 자리남음 -> 딱 버스출발시간에 나와도됨
def solution(n, t, m, timetable):
answer = ''
#분으로 변환, 정렬
times=[]
for time in timetable:
temp=int(time[:2])*60+int(time[3:])
times.append(temp)
times=sorted(times)
#print(times)
#버스에 태우기
#2차원배열 할당
bus=[]
for i in range(n):
bus.append([])
for i in range(n):
버스출발시간=540+i*t
for j in range(m):
#사람이남아있고 빨리온경우 -> 태운다, 태운사람pop
if times and (버스출발시간>=times[0]):
bus[i].append(times[0])
times.pop(0)
#print(bus)
#print(bus[-1])
#print(len(bus[-1]))
# 출근할시간구하기
# 막차에 칸이남아잇음 -> 딱시간에오면됨
# 막차에 칸이없음 -> 맨마지막사람보다 1분빨리나와
if (len(bus[-1])>=0) and (len(bus[-1])<m):
answer=540+(len(bus)-1)*t
elif(len(bus[-1])==m):
answer=bus[-1][-1]-1
#분을 시간으로
#/는 소수계산, //는 정수나누기
answer=str(answer//60).zfill(2) +':'+str(answer%60).zfill(2)
return answer
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 오픈채팅방 파이썬 // 해쉬맵 (0) | 2023.07.13 |
---|---|
프로그래머스 프렌즈4블록 cpp // 배열빡구현, check에서 삭제처리인지검사해야 (0) | 2023.07.13 |
프로그래머스 뉴스클러스터링 파이썬 // 해시맵(dict), 중복집합원소세기 (0) | 2023.07.12 |
프로그래머스 다트게임 python // 문자열파싱 정규식 (0) | 2023.07.12 |
프로그래머스 캐시 Python cpp //LRU구현 ,tolower (0) | 2023.07.11 |