📖/Hello Coding 프로그래밍

[Hello Coding] Chapter 9, Chapter 10 정리

모팔구 2023. 3. 24. 11:36
728x90
반응형

※ 9챕터는 상세하지 않음

Chapter 9. 반복횟수가 정해져 있다면, 반복문 for

1. while문으로 반복횟수가 정해진 코드 작성

  • 반복횟수가 정해져 있는 코드를 while문으로 작성할 때 -> 잘 안씀 for 쓰면 됨
변수 초기화
while ( 변수 범위 설정 )
{
	⋯
    범위 += 1;
}

ex)
int passcodeIndex = 0;
while (passcodeIndex < passcodeLength)
{
	⋯
    passcodeIndex += 1;
}

 

2. for문으로 반복횟수가 정해진 코드 작성

  • for (전) ~하는 동안
    보통 반복횟수가 정해진 경우 for문을, 정해지지 않았을 때는 while문 사용
  • for 문법
for ( (1)초기화 코드; (2)반복 조건식; (4)증감문)
{
	(3)반복할 코드
}

(1)초기화 코드: 반복문이 실행되기 전에 딱 한번만 실행해서 변수를 초기화함
(2)반복 조건식: 반복문을 실행해야 하는지 검사: 반복문이 참이면 (3)반복할 코드 실행, 거짓이면 반복문 종료
(4)증감문: (3)반복할 코드 실행 뒤, 즉 한 번의 반복문 회차가 끝난 뒤 실행함

예시

for (int index = 0; index < 3; index++)
{
 	Console.Write(index);
    Console.WriteLine("번째 반복입니다.");
}
  • ++, --: 변수를 1씩 증가, 감소시키는 의미
  • 반복횟수가 정해져 있는 코드를 for문을 이용해 작성하는 공식
    1. 인덱스를 저장하는 변수를 0으로 초기화한다
    2. 인덱스를 저장하는 변수가 총 반복횟수보다 작은지 비교한다.
    3. 반복문 회차가 끝날 때마다 인덱스를 저장하는 변수를 1만큼 증가시킨다.
ex) 열 번 반복하는 for문
for (int index = 0; index < 10; index++)

 

3. 이중 for문

<생략>

 

기초문제

9-1. 다음 코드를 while문 대신 for문을 사용하도록 수정하세요.

Console.WriteLine("몇 명의 친구들에게 사과를 나눠줄까요?");
int friendCount = int.Parse(Console.ReadLine());

int[] appleNumbers = new int[friendCount];
int index = 0;

while (index < friendCount)
{
	Console.Write(index);
	Console.WriteLine("번째 친구가 가져갈 사과는 몇 개인가요?");
	appleNumbers[index] = int.Parse(Console.ReadLine());
	index += 1;
}

index = 0;

while (index < friendCount)
{
	Console.Write(index);
	Console.Write("번째 친구가 가져간 사괴의 개수는");
	Console.Write(appleNumbers[index]);
	Console.WriteLine("개 입니다.");
	index += 1;
}

나의 답

Console.WriteLine("몇 명의 친구들에게 사과를 나눠줄까요?");
int friendCount = int.Parse(Console.ReadLine());
//
int[] appleNumbers = new int[friendCount];
for (int i = 0; i < friendCount; i++)
{
	Console.Write(i);
	Console.WriteLine("번째 친구가 가져갈 사과는 몇 개인가요?");
	appleNumbers[i] = int.Parse(Console.ReadLine());
}
//
for (int i = 0; i < friendCount; i++)
{
	Console.Write(i);
	Console.WriteLine("번째 친구가 가져간 사과의 개수는 ");
	Console.Write(appleNumbers[i]);
	Console.WriteLine("개입니다.");
}

 

9-2. 다음 코드에서 반복되는 코드를 for문을 사용해서 수정하세요.

int[] scores = new int[5];
Console.Write(0);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[0] = int.Parse(Console.ReadLine());

Console.Write(1);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[1] = int.Parse(Console.ReadLine());

Console.Write(2);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[2] = int.Parse(Console.ReadLine());

Console.Write(3);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[3] = int.Parse(Console.ReadLine());

Console.Write(4);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[4] = int.Parse(Console.ReadLine());

Console.Write("총점은");
Console.Write(scores[0] + scores[1] + scores[2] + scores[3] + scores[4]);
Console.WriteLine("점 입니다.");

나의 답

Console.WriteLine("과목의 수를 입력하세요.");
int subjectCount = int.Parse(Console.ReadLine());
int[] scores = new int[subjectCount];
//
for (int i = 0; i < subjectCount; i++)
{
	Console.Write(i);
	Console.WriteLine("번째 과목의 성적을 입력하세요.");
	scores[i] = int.Parse(Console.ReadLine());
}
//
Console.Write("총점은");
Console.Write(scores[0] + scores[1] + scores[2] + scores[3] + scores[4]);
Console.WriteLine("점입니다");

 

9-3. 짝수단(2단, 4단, 6단, 8단)만 출력하도록 [코드 9-4]를 수정하세요.
(힌트: 9번 줄을 수정하세요.)

나의 답

for (int i = 2; i <= 9; i += 2)
{
	Console.Write(i);
	Console.WriteLine("단");
	for (int j = 1; j <= 9; j++)
	{
		Console.Write(i);
		Console.Write("x");
		Console.Write(j);
		Console.Write("=");
		Console.Write(i * j);
		Console.Write("    ");
	}
Console.WriteLine();

 

심화문제

9-1. [코드 9-2]를 수정해서 비밀번호를 다섯 번만 입력할 수 있게 바꾸세요.
(힌트: while문 대신 for문을 쓰세요.)

나의 답

int[] passcodeNumbers = { 6, 2, 1, 9, 4, 7 };
int passcodeLength = 6;
int[] userInput = new int[passcodeLength];

for (int opportunity = 0; opportunity<5; opportunity++)
{
	for (int passcodeIndex = 0; passcodeIndex < passcodeLength; passcodeIndex++)
	{
		Console.Write(passcodeIndex);
		Console.WriteLine("번째 숫자를 넣어주세요.");
		userInput[passcodeIndex] = int.Parse(Console.ReadLine());
	}

	bool isPasswordCorrect = true;
	for (int passcodeIndex = 0; passcodeIndex < passcodeLength; passcodeIndex++)
	{
		if (userInput[passcodeIndex] != passcodeNumbers[passcodeIndex])
		{
			isPasswordCorrect = false;
			Console.WriteLine("비밀번호가 틀렸습니다.");
			break;
		}
	}

	if (isPasswordCorrect)
	{
	Console.WriteLine("문이 열렸습니다");
	break;
	}
}

 

9-2. 3학년에 다섯 개의 반이 있고 한 반의 학생은 10명입니다. 각 반의 학생들의 성적을 입력받아서 반별로 평균을 구하세요.
(힌트: 이중 for문을 쓰세요.)

나의 답

int[] groupGrade = new int[10];
for (int group = 0; group < 5; group++)
{
	Console.WriteLine("3학년 " + (group + 1) + "반 학생 10명의 성적을 입력하세요");

	int studentGrade;
	int total = 0;
	for (studentGrade = 0; studentGrade < 10; studentGrade++)
	{
		groupGrade[studentGrade] = int.Parse(Console.ReadLine());
		total += groupGrade[studentGrade];
	}

	int average = 0;
	average = total / 10;
	Console.WriteLine("3학년 " + (group + 1) + "반의 평균: ");
	Console.WriteLine(average);
}

 

Chapter 10. 언제나 똑같으면 재미가 없으니, 랜덤

1. 게임: 예측을 못해야 재미있어요

<생략>

 

2. 랜덤

  • random (형)무작위의
  • Random 클래스 예시
Random random = new Random();
int number1 = random.Next(1, 7);
int nubmer2 = random.Next(1, 7);
  • next(min, max): min이상 max미만의 숫자가 나옴

 

기초문제

10-1. 다음 랜덤에서 나올 수 있는 숫자를 전부 열거하세요.

  1. random.Next(3, 10)
  2. random.Next(-2, 4)

나의 답
1. 3 4 5 6 7 8 9
2. -2 -1 0 1 2 3

 

10-2. 5 이상 60 미만의 숫자를 생성하도록 [코드 10-2]의 로또 번호 생성기 프로그램을 수정하세요.
<생략>

 

10-3. 8 이상 50 미만의 숫자를 무작위로 골라서 출력하느 ㄴ코드입니다. (1), (2)에 어떤 코드를 넣어야 할까요?

Random random = (1);

(2)

Console.Write("고른 숫자: ");
Console.WriteLine(randomNumber);

나의 답

(1) new Random()
(2) int randomNumber = random.Next(8, 50);

 

심화문제

10-1. 숫자 맞추기 게임을 만드세요. 규칙은 다음과 같습니다.
(힌트: while문을 쓰세요.)

  1. 수비수가 1 이상 100 이하의 숫자를 무작위로 고릅니다. 
  2. 공격수가 숫자를 입력합니다.
  3. 만약 입력한 숫자가 수비수가 고를 숫자보다 크면 "더 작은 숫자입니다."를 출력합니다.
  4.  만약 입력한 숫자가 수비수가 고를 숫자보다 작으면 "더 큰 숫자입니다."를 출력합니다.
  5. 만약 입력한 숫자가 수비수가 고를 숫자와 같다면 "정답입니다."를 출ㄹ역하고 프로그램을 종료합니다.
  6. 맞출 때까지 2~5를 반복합니다.

나의 답

Random random = new Random();
int dfNumber = random.Next(1, 101);
//
Console.WriteLine("수비수의 숫자가 준비되었습니다.");
Console.WriteLine("공격수는 숫자를 입력하세요.");
int fwNumber = int.Parse(Console.ReadLine());
//
while(true)
{
	if (dfNumber < fwNumber)
	{
		Console.WriteLine("입력한 숫자보다 더 작은 숫자입니다.");
		Console.WriteLine("다른 숫자를 입력하세요.");
		fwNumber = int.Parse(Console.ReadLine());
	}
	else if (fwNumber < dfNumber)
	{
		Console.WriteLine("입력한 숫자보다 더 큰 숫자입니다.");
		Console.WriteLine("다른 숫자를 입력하세요.");
		fwNumber = int.Parse(Console.ReadLine());
	}
	else if (fwNumber == dfNumber)
	{
		Console.WriteLine("정답입니다.");
		break;
	}
}

 

10-2. 가위바위보 게임을 만드세요. 규칙은 다음과 같습니다.

  1. 1은 가위, 2는 바위, 3은 보입니다.
  2. 프로그램에서 1 이상 3이하인 숫자를 무작위로 고릅니다.
  3. 사용자가 1, 2, 3 중에 하나의 숫자를 고릅니다.
  4. 사용자가 지면 "졌습니다."를 출력합니다.
  5. 사용자가 이기면 "이겼습니다"를 출력합니다.
  6. 비겼다면 "비겼습니다."를 출력합니다.
  7. 비기면 2~6을 반복합니다.

나의 답

while (true)
{
	Console.WriteLine("가위바위보를 시작합니다 1은 가위, 2는 바위, 3은 보입니다. 셋 중 아무 숫자를 입력하세요.");
	Random random = new Random();
	int dfNumber = random.Next(1, 4);

	int user = int.Parse(Console.ReadLine());

// 사용자가 졌을 때
	if ((dfNumber == 1 && user == 3) || (dfNumber == 2 && user == 1) || (dfNumber == 3 && user == 2))
	{
		Console.WriteLine("졌습니다.");
	}
// 사용자가 이겼을 때
	else if ((dfNumber == 1 && user == 2) || (dfNumber == 2 && user == 3) || (dfNumber == 3 && user == 1))
	{
		Console.WriteLine("이겼습니다");
	}
	else if ((dfNumber == 1 && user == 1) || (dfNumber == 2 && user == 2) || (dfNumber == 3 && user == 3))
	{
		Console.WriteLine("비겼습니다");
	}
}

 

 

728x90
반응형