본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

Codility - Passing Cars

avatar
yceffort
2020-06-23 · 2분
2min
2020year
KOoriginal
algorithm

Passing Cars

문제

N의 길이로 이루어진 배열 A는 0과 1로 이루어져 있는데, 0과 1은 각각 다음과 같은 의미를 가지고 있다.

  • 0은 차가 동쪽으로 간다
  • 1은 차가 서쪽으로 간다

이 때 동쪽으로 간 차와 서쪽으로 간 차를 짝지을 수 있는 개수를 구하라. 단 먼저 동쪽으로 간차와 그 이후에 서쪽으로 간 차만 짝 지을 수 있다.

A배열이 아래와 같이 주어져 있다면
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1

짝 지을 수 있는 경우의 수는 (0, 1), (0, 3), (0, 4), (2, 3), (2, 4).

5가지다.

단 짝의 개수가 1,000,000,000개를 넘어가면 그냥 -1을 리턴한다.

풀이

// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');

function solution(A) {
  // 동쪽으로 간차의 개수를 센다
  let east = 0
  // 결과
  let passing = 0

  for (let i of A) {
    // 동쪽으로 간 차를 센다.
    if (i === 0) {
      east += 1
    } else {
      // 서쪽으로 간 차가 나타난다면, 현재 동쪽으로 간 차 개수만큼 더한다.
      // 현재 동쪽으로 간 차 개수만큼 짝이 될 수 있기 때문이다.
      passing += east
    }
  }

  if (passing > 1000000000) {
    return -1
  }

  return passing
}

https://app.codility.com/demo/results/trainingXFPYT4-R3D/

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #algorithm

    프로그래머 기초 수학 2-3 - 유리수, 무리수, 실수

    유리수, 무리수, 실수

    2020-07-29·5분
  • #algorithm

    프로그래머 기초 수학 2-2 - 기수법

    기수법

    2020-07-24·3분
  • #algorithm#mathematics

    프로그래머 기초 수학 2-1 - 정수

    정수

    2020-07-23·4분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →