| English | 의미 |
|---|---|
| accumulator/əˈkjuːmjʊleɪtə/ | 누적기 |
초기 최대값이 0인 경우 결과 도출 불가
- 배열에 −8, −3, −11가 포함되어 있습니다. 최대값(max)을 0에서 시작하면 배열에 존재하지 않던 값이 최대값이 됩니다.
- 이 비공집합 배열에서는 a[0]에서 max를 시작합니다. 이후 값을 비교하여 −8을 −3로 업데이트하고 이를 유지합니다.
루프 패턴: 누적
- 루프 패턴은 일반적인 작업을 위한 재사용 가능한 레시피입니다. 누적계(acculator) 패턴은 반복을 걸쳐 누적 합이나 곱을 구성합니다.
sum = 0에서 시작하여 루프 내에서sum = sum + x을 수행하면 누적 합이 변경되며, 음수가 추가될 때는 감소할 수 있습니다. 누적 카운트(count++) 또는 누적 최대값에도 동일한 개념이 적용됩니다.
루프 내부의 조건문
- 매칭되는 항목에만 작동하도록 루프 안에
if을 넣으십시오. " EVEN numbers count": 루프, 그리고if (x % 2 == 0) count++; - 루프는 모든 요소를 방문합니다.
if은 처리할 요소를 결정합니다. 선택과 반복을 결합하는 것이 대부분의 알고리즘의 핵심입니다.
최대값 찾기
- 가장 큰 값을 찾기 위해
max변수를 유지하고 더 큰 값을 볼 때마다 업데이트하십시오. 배열이 비어 있지 않은지 확인하고,max을 첫 번째 값으로 설정한 후 나머지 요소를 검토하십시오. 명시되지 않은 "매우 작은 수"는 실제 입력값보다 클 수 있습니다. - 루프 내부에서
if (x > max) { max = x; }을 사용합니다. 루프가 종료된 후,max은 보아온 가장 큰 값을 저장하고 있습니다.
accumulator 패턴
sum이 반복을 걸쳐 누적됩니다; 0에서 시작합니다.
루프 내에서Running SUM을 만들려면 accumulator를 ...으로 초기화해야 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
합계는 0에서 시작하고, 곱은 1에서 시작해야 합니다.
Running PRODUCT를 만들려면 accumulator를 ...으로 초기화해야 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
0에서 시작하면 곱은 항상 0이 되므로, 1에서 시작해야 합니다.
루프 중 짝수를 세려면 ...을 사용합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
if가 루프가 세는 항목을 선택합니다.
accumulator의 초기화를 루프 안에 두면 매 반복마다 초기화되어 리셋됩니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
루프 내부가 아닌, 루프 전에 초기화해야 합니다.
목표를 찾으면 즉시 루프를 멈추려면 ...을 사용할 수 있습니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
break문은 가장 안쪽 루프에서 탈출합니다. 부울 플래그도 루프 조건이나 제어 논리에서 사용되어야 하며, 단순히 할당만으로는 실행이 중단되지 않습니다.
플래그 또는 break를 이용한 조종기 exits
- 필요하신 것을 찾으면 일찍 멈출 수 있습니다.
boolean플래그를 사용하여 "찾음"을 기록하고 루프 조건에서 이를 검사할 수 있습니다. 플래그에 할당만 하는 것만으로는 루프에서 나가지 않습니다.break은 가장 안쪽의 루프를 즉시 종료시킵니다. - "목록에 0이 포함되나요?" — 첫 번째 0에서 멈추십시오. 조기 종료는 작업을 줄이지만 "찾지 못함" 경우의 논리는 올바르게 유지하십시오.
적합하게 초기화하지 않으면 모든 결과가 틀립니다. 합계(sum) 는 0에서 시작하고, 곱(product) 은 1에서 시작하며(0에서 시작하면 항상 0이 됩니다), 최대값(max) 는 비공집합 확인 후 첫 번째 요소에서 시작합니다. 빈 집합에는 명시적으로 다른 결과를 정의하지 않는 한 최대값이 없습니다. 또한 모든 일치하는 반복에서 업데이트하십시오. 루프 내부에 위치하는 부적절한 초기화는 각 순환마다 초기화하여 합계를 무효화합니다.
What is the maximum of the nonempty array {−8, −3, −11}?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
−3 is the greatest actual element. Starting at 0 produces an invalid invented candidate.
a[0]를 읽는 것은 빈 배열의 최대값을 초기화하는 유효한 방법입니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
빈 배열에는 첫 번째 요소가 없습니다. 입력을 확인하거나 별도의 '최대값 없음' 결과 설정을 정의하십시오.
int 배열 {-8, -3, -11}에는 짝수가 몇 개 있습니까?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
-8만 2로 나눈 나머지가 0이며, 음수는even(짝수)일 수 있습니다.
어레이 a의 루프에서 짝수 세기:
int count = 0;for (int i = 0; i < a.length; i++) { if (a[i] % 2 == 0) count++; }- 루프는 각 요소를 방문하며, **
if**은 짝수만 세습니다.
추론을 새로운 사례로 확장하기
- 빈 배열에는 첫 번째 요소가 없으며 별도의 계약이나 체크가 필요합니다.
- 초기값은 연산에 적합해야 합니다: 합계는 0, 곱은 1, 최대값은 유효한 시작 후보가 되어야 합니다.
일반적인 루프 패턴은 반복과 선택을 결합합니다: accumulator(sum += x, count 또는 running max)는 passes에 걸쳐 구축되며, **if**은 일치하는 항목만 처리하기 위해 내부에 존재합니다. accumulator를 올바르게 initialize하십시오(sum 0, product 1, max는 첫 번째 값), 그리고 답을 찾으면 조종기 exits(break/flag)를 고려하십시오.