Codility Lesson 5 — PassingCars

Task description

  • 연이은 차량 배열 A가 주어지고 이 차량(?)들은 값을 0s/1s을 가짐.
  • 0은 동쪽으로 이동하는 차량, 1은 서쪽으로 이동하는 차량
  • 교차해 지나간 차량의 쌍의 수 찾기 (단 쌍을 이루는 첫번째 차량은 0 이어야 함)

How I did solve

글로 풀어서 작성이 안될거 같아서 그림으로 대체 …

풀이 과정 그림

결국 반대 방향으로 가는 차량이 나타났을 때, 동일한 방향으로 가는 차량의 수만큼과 교차하므로 각 차량을 순회하면서
교차한 수 = 교차한 수 + 같은 방향으로 가는 차량 수
를 누산하면 된다.

단, 1,000,000,000을 넘어서면 -1 반환.

Solved Code

function solution(A) {
  const limit = 1000000000,
        condition = 0;
        
  let count  = 0,
      paired = 0;
        
  A.some ( item => {
    if(condition === item)  {
      ++paired;
      return false;
    }
    if(count > limit) return count = -1
    else count += paired;
  });
    
  return count;
}

Retrospective

  • 역시 문제를 이해하는게 문제였다…
  • 대체 왜 각 car는 0s 나 1s를 가진다고 문제를 내놓은 건지부터가 허들이었다.
    0초나 1초인데 0초는 동쪽을 향해 가고 1초는 서쪽을 향해 간다는게 대체 무슨 말인지 지금도 이해가 안되는건 매한가지다. (문제 풀이에서 초단위는 그냥 무시해버렸는데 되더라;;)
  • passing cars라는 의미를 해석하는데도 애를 먹었다. "지나가는 차"로 해석을 하니 "교차한 차"일거라고는 생각도 안했던 터라 초단위와 무슨 관계가 있는 줄 알고 (나를 앞서 질러간 차도 passing car라고 생각…) 처음에 초단위에 매여있는 바람에…
  • 결론은 영어부터 잘하자… 하아…

Hero image from pixabay

작성자

멀더끙

접근성에 관심이 많은 Front-End Developer, 커피 애호가, 사진 찍기 좋아하는 여행 러버, 아직도 블로그 뭘 쓸지 모르겠는 초보 블로거, 그냥 이것 저것 개인의 생각을 끄적끄적이는 멀더끙의 블로그입니다.

댓글