보관함

JUNGOL 기초다지기 07 반복제어문2

niamdank 2019. 11. 21. 22:10

프로그래밍에서 가장 기초적인 내용을 다루는 기초 다지기입니다.

이번 포스팅은 기초 다지기 중 일곱 번째인 반복제어문2 문제를 풀어보도록 하겠습니다.

 

기초 내용인 만큼 다른 설명없이 문제와 코드만 간단하게 작성하도록 하겠습니다.


541 : 반복제어문2 - 자가진단1

#include <iostream>

using namespace std;

int main(void)
{
	char ch;

	cin >> ch;

	for (int i = 0; i < 20; ++i)
		cout << ch;
	cout << endl;
}

 

542 : 반복제어문2 - 자가진단2

#include <iostream>

using namespace std;

int main(void)
{
	for (int i = 10; i <= 20; ++i)
		cout << i << ' ';
	cout << endl;
}

 

543 : 반복제어문2 - 자가진단3

 

이 문제는 조건문을 사용해야할 것 같지만 조금만 더 생각하면 조건문 없이 처리가 가능합니다.

#include <iostream>

using namespace std;

int main(void)
{
	int var;

	cin >> var;

	for (int i = 2; i <= var; i += 2)
		cout << i << ' ';
	cout << endl;
}

 

544 : 반복제어문2 - 자가진단4

 

이런 문제는 사실 반복문을 사용하는 것 보다는 수학 공식을 사용하는 편이 더 효율적입니다.

다만 지금은 문제의 의도가 반복문을 사용하는 것이기 때문에 문제의 의도에 따르도록 하겠습니다.

#include <iostream>

using namespace std;

int main(void)
{
	int var;

	cin >> var;

	int sum = 0;
	for (int i = var; i <= 100; ++i)
		sum += i;
	cout << sum << endl;
}

 

545 : 반복제어문2 - 자가진단5

 

10개의 정수를 입력받는다고 무조건 배열을 만들어 입력 받을 필요는 없습니다.

문제의 유형에 따라 단순히 반복문 내부에서 입력받은 값을 바로 처리할 수 있는 경우엔 그렇게 하는 편이 더 좋습니다.

#include <iostream>

using namespace std;

int main(void)
{
	int countMul3 = 0, countMul5 = 0;

	int var;
	for (int i = 0; i < 10; ++i)
	{
		cin >> var;
		
		if (var % 3 == 0)
			countMul3++;
		if (var % 5 == 0)
			countMul5++;
	}

	cout << "Multiples of 3 : " << countMul3 << endl;
	cout << "Multiples of 5 : " << countMul5 << endl;
}

 

546 : 반복제어문2 - 자가진단6

#include <iostream>

using namespace std;

int main(void)
{
	int lim;

	cin >> lim;

	int var, sum = 0;
	for (int i = 0; i < lim; ++i)
	{
		cin >> var;
		sum += var;
	}

	float avg = static_cast<float>(sum) / lim;

	cout.setf(ios::fixed);
	cout.precision(1);

	cout << "avg : " << avg << endl;

	if (avg >= 80.0f)
		cout << "pass" << endl;
	else
		cout << "fail" << endl;
}

 

547 : 반복제어문2 - 자가진단7

#include <iostream>

using namespace std;

int main(void)
{
	for (int i = 2; i <= 6; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			cout << i + j << ' ';
		}
		cout << endl;
	}
	cout << endl;
}

 

548 : 반복제어문2 - 자가진단8

#include <iostream>
#include <iomanip>

using namespace std;

int main(void)
{
	cout.setf(ios::right);
	
	for (int i = 2; i <= 4; ++i)
	{
		for (int j = 1; j <= 5; ++j)
		{
			cout << i << " * " << j << " = " << setw(2) << i * j << "   ";
		}
		cout << endl;
	}
	cout << endl;
}

 

130 : 반복제어문2 - 형성평가1

#include <iostream>

using namespace std;

int main(void)
{
	int n;

	cin >> n;

	for (int i = 0; i < n; ++i)
	{
		cout << "JUNGOL" << endl;
	}
}

 

131 : 반복제어문2 - 형성평가2

#include <iostream>

using namespace std;

int main(void)
{
	int var1, var2;

	cin >> var1 >> var2;

	int beg = (var1 < var2) ? var1 : var2;
	int end = (var1 > var2) ? var1 : var2;
	for (int i = beg; i <= end; ++i)
	{
		cout << i << ' ';
	}
	cout << endl;
}

 

132 : 반복제어문2 - 형성평가3

#include <iostream>

using namespace std;

int main(void)
{
	int var;

	cin >> var;

	int sum = 0;
	for (int i = 5; i <= var; i += 5)
	{
		sum += i;
	}

	cout << sum << endl;
}

 

133 : 반복제어문2 - 형성평가4

#include <iostream>

using namespace std;

int main(void)
{
	int n;

	cin >> n;

	int var, sum = 0;
	for (int i = 0; i < n; ++i)
	{
		cin >> var;
		sum += var;
	}

	float avg = static_cast<float>(sum) / n;

	cout.setf(ios::fixed);
	cout.precision(2);

	cout << avg << endl;
}

 

134 : 반복제어문2 - 형성평가5

#include <iostream>

using namespace std;

int main(void)
{
	int var;
	int oddCount = 0, evenCount = 0;

	for (int i = 0; i < 10; ++i)
	{
		cin >> var;
		if (var % 2 == 0)
			evenCount++;
		else
			oddCount++;
	}

	cout << "even : " << evenCount << endl;
	cout << "odd : " << oddCount << endl;
}

 

135 : 반복제어문2 - 형성평가6

 

귀찮은 문제가 나왔네요. 어렵다기 보다는 문제에 조건을 정확히 명시하지 않는 문제입니다.

입력이 뒤에 오는 숫자가 더 작을 수도 있는 조건이 있습니다.

#include <iostream>

using namespace std;

void Swap(int& var1, int& var2);

int main(void)
{
	int var1, var2;

	cin >> var1 >> var2;

	if (var1 > var2)
		Swap(var1, var2);

	int sum = 0, count = 0;
	for (int i = var1; i <= var2; ++i)
	{
		if (i % 3 == 0 || i % 5 == 0)
		{
			sum += i;
			count++;
		}
	}

	float avg = static_cast<float>(sum) / count;

	cout.setf(ios::fixed);
	cout.precision(1);

	cout << "sum : " << sum << endl;
	cout << "avg : " << avg << endl;
}

void Swap(int& var1, int& var2)
{
	int temp = var1;
	var1 = var2;
	var2 = temp;
}

 

136 : 반복제어문2 - 형성평가7

 

for문 내에는 콤마로 구분하여 여러개의 연산을 넣을 수 있습니다.

#include <iostream>

using namespace std;

int main(void)
{
	int var;

	cin >> var;

	for (int i = var, count = 0; count < 10; i += var, ++count)
	{
		cout << i << ' ';
	}
	cout << endl;
}

 

137 : 반복제어문2 - 형성평가8

#include <iostream>

using namespace std;

int main(void)
{
	int height, width;

	cin >> height >> width;

	for (int i = 1; i <= height; ++i)
	{
		for (int j = 0, num = i; j < width; ++j, num += i)
		{
			cout << num << ' ';
		}
		cout << endl;
	}
}

 

138 : 반복제어문2 - 형성평가9

#include <iostream>

using namespace std;

int main(void)
{
	int var;
	
	cin >> var;

	for (int i = 1; i <= var; ++i)
	{
		for (int j = 1; j <= var; ++j)
		{
			cout << '(' << i << ", " << j << ") ";
		}
		cout << endl;
	}
}

 

139 : 반복제어문2 - 형성평가A

 

#include <iostream>
#include <iomanip>

using namespace std;

int main(void)
{
	int var1, var2;

	cin >> var1 >> var2;

	for (int i = 1; i <= 9; ++i)
	{
		if (var1 < var2)
		{
			for (int j = var1; j <= var2; ++j)
			{
				cout << j << " * " << i << " = " << setw(2) << j * i << "   ";
			}
		}
		else
		{
			for (int j = var1; j >= var2; --j)
			{
				cout << j << " * " << i << " = " << setw(2) << j * i << "   ";
			}
		}
		cout << endl;
	}
}

 

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=1070

 

JUNGOL | 문제은행 1 페이지

 

www.jungol.co.kr