- Published on
Codility - Passing Cars
- Author
- Name
- yceffort
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
}