솔직히 문제 이해하는게 너무 어려웠다. 예시로 주어진 예제도 이해를 못 해서 계속 ???상태로 문제만 한 10번 읽었다.
문제를 정리해보자면 가로지르는 차의 수를 구하는게 목표이다. 여기서 passing을 내가 이상하게 해석해서 문제 이해가 안 됐던것...
0은 오른쪽, 1은 왼쪽으로 가는 차이고 차량끼리 서로 교차하게 되는 수를 구한다고 생각하면 된다.
가로지르는 차의 수가 10억개를 넘으면 -1반환하고 수 범위 10만이다.
역시 시간이 포인트인 문제인듯. 이중포문써서 단순 더하기로 세면 쉽게 풀리겠지만 그러면 무조건 타임아웃 뜰 듯.
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A):
count = 0
for idx, num in enumerate(A):
if num == 0:
for num2 in A[idx+1:]:
if num2 == 1:
count += 1
return count

역시나
핵심은 0이 나온 뒤의 수들 중, 1의 출현수를 구하는 것이다. 그래서 배열의 원소들의 종류가 0과 1뿐인걸 이용해서 sum()을 이용해 전체합(=1의 전체 개수)을 구했다. 그 다음 for문으로 A를 순환하며 현재까지 발견한 1의 수를 카운트해서 전체수에서 빼 주는 방식으로 간단하게 이후에 나오는 1의 수를 계산할 수 있었다.
def solution(A):
total_num = sum(A) # 배열의 모든 1을 더한 수
count_1 = 0 # 여태나온 1의 수
result = 0 # 반환할 결과
for num in A:
if num == 0:
result += (total_num - count_1)
if result > 1000000000:
return -1
else:
count_1 += 1
return result
