조건이 2개만 있을 경우 사용하면 좋습니다.
bool은 true, false만 갖고 있기 때문이죠
여기서 중요한 부분! 조건이 2개라는 점을 잘 생각해야합니다.
다양하게 생각을 해야된다는 것이죠.
예를 들어
숫자가 같은 것이 있냐(true)?, 없냐(false)?
(아직 숫자로만 사용해서 더는 아이디어가 떠오르지 않아서 예시는 여기까지...)
new bool[]안에 들어갈 숫자는 상당히 중요합니다.
예시들을 통해 배워가겠습니다.
<문제> : X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
<입력> : 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
<출력> : 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고,
2번째 줄에선 그 다음 출석번호를 출력한다.
//입력
// 30명의 학생들이 있습니다.
bool[] student = new bool[30]; // bool타입 배열 안에는 학생들의 출석번호가 다 들어가있어야합니다.
for(int i = 0; i < 28; i++) // 과제를 낸 학생들 번호
{
int goodStudent = int.Parse(Console.ReadLine()) - 1;
// -1을 하는 이유는 출석번호 n(1 ≤ n ≤ 30)의 범위로 설정 되어 있으나
//우린 인덱스 접근을 위해 0~29로 설정해야한다. 그래서 -1을 한다.
student[goodStudent] = true;
// 해당 인덱스의 맞는 숫자가 들어오면 true를 넣어줍니다!
// 해당 인덱스의 맞는 숫자가 들어오지 않는다면 false로 되어 있습니다.
// [0] = 0 들어요면 true
// [25] = 25들어오면 true
// [26] = 맞는 숫자가 들어와있지 않다면 false
}
for(int stu = 0; stu <30; stu++) // 출석부, stu를 1로 두지 않는 것은 인덱스 0번의 학생 출석부를 뽑아내기 위해서입니다.
{
if(student[stu] != true) // 과제를 내지 않은 학생들 번호
{
int badstudent = stu + 1; // stu는 인덱스로 되어 있으서 0 ~29번까지 있으니까, +1을 해서 1~30의 맞춰줘야합니다.
Console.WriteLine($"{badstudent}");
}
}
<문제3052> : 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다.
예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다.
그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
<입력>: 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다.
이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
<출력> : 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
int input = 0;
bool[] remain = new bool[42];
// 최대 입력값이 1,000이기 때문에 나머지 최대값은 41이다.
// 그래서 인덱스 41번까지 만들어주면 되기 때문에 크기를 42로 지정한다.
int count = 0;
for (int i = 0; i < 10; i++) // 10번째 줄까지 반복하기
{
input = (int.Parse(Console.ReadLine()) % 42); // 42로 나눈 나머지 구합니다.
remain[input] = true;
// 나머지 값을 true로 저장합니다.
//같은 숫자가 나와도 이미 true이기 때문에 얼마든지 같은 값이 나와도 무방합니다.
}
for (int j = 0; j < remain.Length; j++) // 입력받은 remain 길이만큼 반복합니다.
{
if (remain[j] == true)
{
count++; // true된 인덱스 만큼 서로 다른 나머지가 몇 개인지 확인이 가능합니다.
}
}
Console.WriteLine(count);