최근에 프로그래머스를 좀 풀어보면서 코딜리티를 잊고 있었습니다...

동쪽으로 가는 차랑 서쪽으로 가는 차가 있어서 이들이 총 몇번 마주쳐 지나가는지 구하는 문제입니다.
int solution(vector<int> &A) {
int ecnt = 0;
int sum = 0;
for(int i = 0; i < A.size(); i++) {
if(A[i] == 0) { ecnt++; }
else { sum += ecnt; }
if(sum > 1000000000) { return -1; }
}
return sum;
}
먼저, 동쪽으로 가는 차를 ecnt로 잡아주고 총 마주친 횟수를 sum으로 정의해줍니다. 그리고 조건문을 통해 i번째 자동차가 서쪽으로 가는지 동쪽으로 가는지 확인해서 동쪽으로가면 cnt를 증가시켜주고, 서쪽으로 가면 sum += ecnt를 해줍니다. 그 이유는 다음의 그림을 보면서 설명하겠습니다.

여기서 하얀색차를 예로 들어보겠습니다. 지금 프로그램상으로는 i가 2를 지나 3이 됐다고 했을때, ecnt가 2가 됩니다. 그리고 하얀차는 파란차와 초록차를 지나 총 2개를 지나게 됩니다. 즉, ecnt가 얼마냐에 따라서 동쪽으로 가는 차들을 마주치는 수가 달라집니다. 그래서 위와 같은 코드가 실행가능한거고 마지막엔 문제에서 요구한 예외처리를 해주면서 프로그램을 마쳤습니다.

중괄호라든지 숫자나 공백 사용하는 방식 바꿨습니다.