less than 1 minute read

118667. 두 큐 합 같게 만들기 / c++ / level2 / 1시간+

문제 및 코드 (링크)

image

접근 방식

  1. 두 큐의 원소를 같게 만들 수 있다면, 그 최소 이동 횟수를 반환하고, 같게 만들 수 없다면 -1을 반환하는 문제
  2. 우선 각 큐의 합 (sum1, sum2) 를 구한다.
  3. 그리고 sum1 == sum2 가 될 때까지 count++ 하며 각 큐의 원소를 반대 큐로 옮기며 sum1 과 sum2 를 갱신한다.
  4. 만약 sum1 == sum2 가 되면 count를 반환
  5. 만약 count > maxCount (queue1.size() * 2 + 2)면 -1을 반환
  6. 해결

생각해 볼 점

  1. 처음엔 두 큐를 붙여 이중 포인터로 풀어볼까 했는데 실패했다.
  2. 풀다가 시간이 오래 걸려서 예전에 풀었던 코드를 참고했다.
  3. 원소의 삽입 삭제를 다 하지 않고, 삽입만 하고 삭제는 index만 증가시키는 방법을 쓰니 (당연하게도) 직접 삭제하는 것보다 시간 효율이 올랐다.

해시태그

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL