{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉누적합〉동료 배율 합산 점수← 이전다음 →
#019 · 누적합중간누적 곱,모듈러 연산

동료 배율 합산 점수

문제

협동 레이드에 참가한 n명의 대원이 각자 하나씩 배율 장치를 켭니다. mults[i]는 i번 대원이 켠 장치의 배율입니다.

i번 대원의 지원 점수 는 자기 자신을 뺀 나머지 대원들의 배율을 전부 곱한 값입니다. 값이 매우 커질 수 있으므로 각 지원 점수를 1,000,000,007로 나눈 나머지를 반환하세요.

solution(mults)는 0번부터 n-1번 대원까지의 지원 점수를 순서대로 담은 배열을 반환합니다.

예시

mults=[3,5,2,7] → [70,42,105,30]
  0번의 점수는 5×2×7 = 70, 1번은 3×2×7 = 42, 2번은 3×5×7 = 105, 3번은 3×5×2 = 30이다.
 
mults=[4,0,6]   → [0,24,0]
  1번을 뺀 곱만 4×6 = 24이고, 나머지는 배율 0인 1번이 곱에 포함돼 0이 된다.
 
mults=[2,2]     → [2,2]
 
mults=[9973,9967,9949,9941,9931]
  → [964443985,199097001,551854441,753787330,148363690]
  실제 곱은 자릿수가 매우 크므로 1,000,000,007로 나눈 나머지를 낸다.

제약 조건

  • 2 ≤ mults.length ≤ 100,000
  • 0 ≤ mults[i] ≤ 10,000
  • 반환 배열의 각 원소는 0 이상 1,000,000,006 이하입니다
  • 나눗셈을 써도 되지만, 배율이 0인 대원이 있을 수 있다는 점과 나머지 연산에서는 일반적인 나눗셈이 성립하지 않는다는 점에 주의하세요
  • 나머지끼리 곱하면 Number.MAX_SAFE_INTEGER(약 9×10^15)를 넘어 정밀도가 깨질 수 있습니다

시간 복잡도 목표: O(N)

테스트 케이스

예시 1: 작은 배율 4개
입력: mults = [3,5,2,7]
출력: [70,42,105,30]
예시 2: 배율 0이 하나 섞인 경우
입력: mults = [4,0,6]
출력: [0,24,0]
예시 3: 최소 길이
입력: mults = [2,2]
출력: [2,2]
예시 4: 나머지 연산이 필요한 큰 곱
입력: mults = [9973,9967,9949,9941,9931]
출력: [964443985,199097001,551854441,753787330,148363690]
엣지: 배율 0이 둘 이상이면 모두 0
입력: mults = [0,0,5]
출력: [0,0,0]
엣지: 모든 배율이 1
입력: mults = [1,1,1,1]
출력: [1,1,1,1]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.