https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



Solution

def shuttle_time(n, t):
shuttle = []
shuttle.append("09:00")
hour = 9
minute = 0
for i in range(n-1):
minute += t
if minute >= 60:
hour += 1
minute = 0
if hour == 9:
if minute < 10:
tmp = "09:0" + str(minute)
shuttle.append(tmp)
else:
tmp = "09:" + str(minute)
shuttle.append(tmp)
else:
if minute < 10:
tmp = str(hour) + ":0" + str(minute)
else:
tmp = str(hour) + ":" + str(minute)
shuttle.append(tmp)
return shuttle
def solution(n, t, m, timetable):
shuttle = shuttle_time(n, t)
timetable.sort()
for i in range(n):
cnt = 0
if len(timetable) < m:
return shuttle[-1]
if i == n-1:
if timetable[0] > shuttle[i]:
return shuttle[i]
hour, minute = timetable[m-1].split(':')
hour, minute = int(hour), int(minute)
minute -= 1
if minute == -1:
minute = 59
hour -= 1
if hour < 10:
if minute < 10:
return "0" + str(hour) + ":0" + str(minute)
else:
return "0" + str(hour) + ":" + str(minute)
else:
if minute < 10:
return str(hour) + ":0" + str(minute)
else:
return str(hour) + ":" + str(minute)
for j in range(m-1, -1, -1):
if timetable[j] <= shuttle[i]:
timetable.pop(j)
view raw 셔틀버스.py hosted with ❤ by GitHub

 

문제 유형 : 문자열, 구현

 

처음에 입출력 예제 2번이 좀 헷갈렸지만 바로 이해하고 구현을 했다.

했지만,,테스트 케이스 5번과 16번을 통과 못해서 고생했다.

백준은 나와있는 입출력 예제 통과하면 웬만하면 맞던데 프로그래머스는

테스트 케이스를 공개를 안해서 더 까다로운 것 같다.

 

5번과 16번을 통과 못 한 이유는 timetable에서 셔틀시간보다 작을 때 값을 빼는 부분을 잘못 구현한 것 이다..

인덱스를 0부터 비교하면서 값을 빼니까 다른 TEMP 리스트를 하나 더 생성해야 했고

그러면서 코드가 복잡해지고 깊은 나락으로 빠졌었다.

인덱스를 m-1부터 반대로 비교하면 TEMP 생성 필요없이 훨씬 깔끔하게 구현 가능하다.

 

정답 맞추고 다른 사람들이 푼 풀이 보니까 시간을 저렇게 단순무식하게 처리한 사람은 나 밖에 없는 것 같다.

datetime이라는 모듈이 있는 지도 몰랐고 더 깔끔한 방법도 있는데 그건 생각도 못했다.

아직 많이 부족한 것 같다. 

 

 


생강강

,