본문 바로가기
  • Adillete
【스터디노트】/▷TIL

99클럽 코테 스터디 18일차 TIL + 오늘의 학습 키워드 이진탐색

by 아딜렛 2025. 4. 23.


- 오늘의 학습 키워드 이진 탐색
- 공부한 내용 본인의 언어로 정리하기

버스 노선 별로 영식이가 탈수 있는 첫번째 출발시간을 계산

모든 노선중에 가장 빨리 탈수 있는 버스

그 버스 출발시간과 영식이 도척시간의 차이를 계산

 

function calculateMinWaitTime(busLines, arrivalTime):
    minWaitTime = INF
    
    for each bus in busLines:
      starttime = bus.startTime
      interval = bus.internal
      count= bus.count
      
      #버스가 모두 출발했는지 확인
      if startTime + (count -1) * interval< arrivalTime:
      continue
      
      #영식이가 탈수 있는 첫번째 버스 시간 찾기
        firstAvailableBus = startTime
        while(firstAvailableBus += interval
        
      # 최대 출발 시간을 넘지 않는 지  확인
      if firstAvailableBus <= startTime +(count-1) *interval:
        waitTime = firstAvailableBus - arrivalRime
        minWaitTime = min(minWaitTime, waitTime)
        
        if minWaitTime ==INF:
          return -1
          else:
          return minWaitTime


- 오늘의 회고
  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

버스의 마지막 출발시간 계산식 만드는 데 어려움이 있었다.

예시들으로 계속 풀어봤는데 예시로 풀어져 있는 것을 식으로 만드는게 참 어려웠다.
  - 어떻게 해결했는지 

버스 시간을 순서대로 나열하면

첫번째 버스는 S

두번째 버스는 S+I

세번째는 S+2I니까

마지막 버스 출발시간은 

int lastDeparture = S + (C - 1) * I;


  - 무엇을 새롭게 알았는지 버스 시간을 구하는 것도 알고리즘으로 풀수 있다니 재미있었다.
  - 내일 학습할 것은 무엇인지