Insert Interval

박수빈·2022년 1월 16일
0

leetcode

목록 보기
4/51
post-custom-banner


문제

  • 겹쳐지지 않는 구간이 들어있는 intervals가 인풋으로 들어옴
  • intervals[i] = [start_i, end_i]
  • start_i 순으로 정렬되어 있음
  • 오름차순이 성립되도록 newintervals를 삽입하라 + 구간이 겹치지 않아야함
  • 겹치는 구간은 필요 하면 merge 해라

풀이

첫 시도

  1. range(0, max+1)의 리스트를 만들자(False로 차있는)
  • max는 newInterval[1]이거나, intervals[-1][1]
  1. intervals을 순회하며, range(start, end)True로 변경
  2. range(newInterval)을 다 True로 변경
  3. 리스트를 순회하며, True면 start값으로 리스트에 담은채로 순회하다 False가 나오면 리스트에 end값으로 담아 한 구간을 파악한다.
  4. start없이 False가 나오면 뛰어넘는다.

예외처리

  1. intervals가 빈 리스트거나, newInterval이 빈 리스트 일 경우
    - 첫 max 값을 정할 때, IndexError 발생
    -> if 문 두어서 빈 리스트인 경우 거르기
  2. 구간이 [k,k]인 경우
    • 예상치 못했는데....? 지금 푼 방식으로 해결 불가능......
    • 조건을 보면 start <= end 로 되어있다..! 조건을 잘 읽자❗❗

두번째 시도

첫 풀이와 비슷한데, 2중 리스트를 이용해서 값을 만들었다.
우선 본래의 interal 값들을 리스트에 넣었다.

intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]

일 때,

이런 리스트를 우선 만들고, intervals를 순회하며, 구간 속의 모든 값들을 [T,F]로 변경하고, 꼬리값만 [F,T]로 변경했다.

다음 새 인터벌의 값 [4,8]을 보면서

구간이 연속될 수 있게 변경해 주었다.
그런데 새 구간이 [0,0]처럼 일 경우 문제가 발생하였고, 이를 예외처리했다. 아 근데 이거 예외처리할거면 걍 첫번째 방법에서 예외처리할걸;;

결과

너무 때려맞춘거 같은데 지치니까 그만해야지


profile
개발자가 되고 싶은 학부생의 꼼지락 기록
post-custom-banner

0개의 댓글