작은 걸음 III — 프로그램으로 생각하기
가장 큰 값이 몇 개인지 세기
가장 큰 값이 몇 개인지 세기
이번에 배울 것
이미 아는 절차 두 개를 이어 붙이면 새 문제를 해결할 수 있습니다.
실행해 보기
예제 · example2.cpp
void small_main()
{
Array<int> numbers = {4, 9, 2, 9, 7};
int largest = numbers[0];
int count_largest = 0;
for (int i = 0; i < numbers.length(); i = i + 1)
if (numbers[i] > largest)
largest = numbers[i];
for (int i = 0; i < numbers.length(); i = i + 1)
if (numbers[i] == largest)
count_largest = count_largest + 1;
print("Largest: ", largest);
print("How many: ", count_largest);
}
먼저 최댓값을 찾고, 두 번째 반복에서 그 값과 같은 원소를 셉니다. 출력은 Largest: 9, How many: 2입니다.
두 반복을 억지로 하나로 합치기보다 각 단계가 맡은 일을 먼저 분명히 하세요. 배열에는 원소가 하나 이상 있어야 합니다.
Exercise — 가장 큰 값은 몇 번?
Array의 가장 큰 값을 먼저 찾고, 그 값이 몇 번 나타나는지 두 번째 loop에서 세세요.
연습 문제 코드 · exercise2_starter.cpp
void small_main()
{
Array<int> numbers = {5, 9, 2, 9, 9, 4};
// find largest, then count it.
}
Hint
첫 loop는 largest, 두 번째 loop는 numbers[i] == largest인 횟수를 셉니다.
풀이 보기
void small_main()
{
Array<int> numbers = {5, 9, 2, 9, 9, 4};
int largest = numbers[0];
for (int i = 1; i < numbers.length(); i = i + 1)
if (numbers[i] > largest)
largest = numbers[i];
int count = 0;
for (int i = 0; i < numbers.length(); i = i + 1)
if (numbers[i] == largest)
count = count + 1;
print("Largest: ", largest);
print("Count: ", count);
}