1.풀이방법
입력된 셔틀운행횟수(n)와 셔틀운행간격(t)를 가지고 셔틀도착시간을 모두 가지고온다.
n=2, t = 10 => ['09:00','09:10']
timetable에 입력된 (['09:10', '09:09', '08:00']) 크루를 시간에 맞게 태운다.
00:01~09:00 - 08:00(1명)
00:01~09:10 - 09:09,09:10(2명)
*중요*
여기서 00:01로 계속 계산하는 이유는 09:00이전에 도착했지만 탑승을 못할경우 09:10버스에 태워야하기 때문이다.
셔틀에 자리가 남을경우 마지막 셔틀도착시간 09:10를 반환해준다.
셔틀에 자리가 없을경우 마지막에 탑승한 크루시간 09:10에서 1분전 09:09를 반환해준다.
2.코드
def Question4(n,t,m,timeTable):
shuttleTime = [] #1
timeTable = sorted(timeTable) #2
for i in range(n):
shuttleTime.append(getShuttleTime(i,t)) #3
k = 0 #timeTable 순서
lastTime = ''
for i in range(len(shuttleTime)): #4
for j in range(m): #5
if k < len(timeTable): #6
if 1 <= getNumber(timeTable[k]) and getNumber(timeTable[k])<=getNumber(shuttleTime[i]):
lastTime = timeTable[k]
k += 1
else: #7
return shuttleTime[len(shuttleTime)-1]
if lastTime == '':
return shuttleTime[len(shuttleTime)-1] #10
return getTime(getNumber(lastTime)) #11
def getShuttleTime(n,t): #8
oldMin = n*t
if oldMin < 60:
newMin = 900 + oldMin
else:
newMin = 900+100*int(oldMin/60)+int(oldMin%60)
result = str(newMin).rjust(4, '0')
return result[0:2]+':'+result[2:4]
def getNumber(time): #9
return 100*int(time[0:2])+int(time[3:5])
def getTime(Number): #10
if Number%100 == 0:
Number -= 41
else:
Number -= 1
result = str(Number).rjust(4, '0')
return result[0:2]+':'+result[2:4]
3.코드설명
#1 셔틀시간을 받을 변수를 선언한다.
#2 크루도착시간을 오름차순으로 정렬한다.
#3 입력된 셔틀운행횟수 와 셔틀운행간격을 계산해서 셔틀버스 도착시간을 구한다.
#4 셔틀버스 도착횟수 만큼 반복문을 돌린다.
#5 셔틀버스 정원만큼 반복문을 돌린다.
#6 셔틀버스 도착시간 전에 도착한 크루를 버스에 태운다.
#7 셔틀버스의 운행을 끝나기도전에 모든 크루가 탑승을 끝냈다 => 셔틀버스의 마지막시간을 반환한다.
#8 셔틀운행횟수(n) 와 셔틀운행간격(t)을 계산하는 함수 ex)n=2,t=10 => ['09:00','09:10']
#9 시간을 숫자로 변환해주는 함수 23:10 => 2310, 09:10 => 910
#10 숫자를 시간으로 변환후 -1분 한걸 반환해주는 함수 2310 => 23:09, 0900 => 08:59
#11 마지막크루 도착시간 -1분해서 반환한다.
4.결과
>>> Question4(1,1,5,['08:00', '08:01', '08:02', '08:03'])
'09:00'
>>> Question4(2,10,2,['09:10', '09:09', '08:00'])
'09:09'
>>> Question4(2,1,2,['09:00', '09:00', '09:00', '09:00'])
'08:59'
>>> Question4(1,1,5,['00:01', '00:01', '00:01', '00:01', '00:01'])
'00:00'
>>> Question4(1,1,1,['23:59'])
'09:00'
>>> Question4(10,60,45,['23:59','23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59', '23:59'])
'18:00'
'IT관련정보 > 카카오 코딩테스트 1차(2017년)' 카테고리의 다른 글
6. 프렌즈4블록(난이도: 상) - Python3.6.1 (0) | 2018.10.06 |
---|---|
5. 뉴스 클러스터링(난이도: 중) - Python3.6.1 (0) | 2018.10.06 |
3. 캐시(난이도: 하) - Python3.6.1 (0) | 2018.10.06 |
2. 다트 게임(난이도: 하) - Python3.6.1 (0) | 2018.09.29 |
1. 비밀 지도(난이도: 하) - Python3.6.1 (0) | 2018.09.29 |