시공의 폭풍은 87명의 영웅들 중
각 팀별로 5명씩 골라 총 10명이 플레이하는 게임이다.
당신의 팀원들이 선택한 4명의 영웅들과
당신이 선택하길 원하는 영웅 5명의 번호가 주어졌을 때,
선택할 수 있는 영웅이 몇 명인지 세어보자.
첫 번째 줄에는 당신의 팀원들이 선택한 4명의 영웅 번호가
중복없이 공백으로 구분되어 주어진다.
두 번째 줄에는 당신이 선택하고자 하는 5명의 영웅 번호가
중복없이 공백으로 구분되어 주어진다.
당신이 선택하고자 하는 영웅들 중 선택할 수 있는,
즉 이미 팀원이 선택한 영웅이 아닌 영웅의 수를 출력한다.
1 5 7 10
1 2 3 4 5
3
1 2 3 4
1 2 3 4 5
1
입력값은 총 두 가지가 들어오게 된다.
첫 번째 줄은 팀원들이 선택한 4명의 영웅 번호가
중복없이 공백으로 구분되어 주어진다.
이 값들을 받아주기 위해서 selected_arr
이라는 배열을 선언해주었다.
int selected_arr[4] = {0, };
두 번째 줄은 내가 선택하고 싶은 영웅 5명의 번호가
중복없이 공백으로 구분되어 주어진다.
이 값들 또한 받아주기 위해 arr
이라는 배열을 선언해주었다.
int arr[5] = {0, };
출력값은 팀원들이 선택한 영웅들의 번호 4가지와
내가 선택하고 싶은 영웅들의 번호 5가지를 비교하여
중복되지 않는 갯수만큼을 세어주면 된다.
이에 대한 변수는 counts
라고 선언해주고,
기본값으로 5
를 대입해두었다.
이 이유는, 두 종류의 입력값들을 비교했을 때,
완전히 중복되지 않는 경우 최댓값이 5
이기 때문이다.
그러므로, 중복되는 경우가 생길 때마다 -1
연산을 해주면 된다.
이제 본격적으로 값을 받아 저장해보자.
// 첫 번째 줄의 입력값들
for (int i = 0; i < 4; i++)
scanf("%d", &selected_arr[i]);
// 두 번째 줄의 입력값들
for (int i = 0; i < 5; i++)
scanf("%d", &arr[i]);
⚠️scanf
함수의 형식에는 &
가 필요하다. (printf
함수의 형식을 혼동하지 말자.)
입력값들을 제대로 받아왔는지 체크도 한 번 해보자.
물론, 그냥 다음 단계로 넘어갈 수도 있지만
결과값이 원하는 대로 나오지 않았을 때
입력값들을 제대로 받아오지 않아서 처음부터 꼬여버리는 때가 있곤 하다.
입력받은 것을 출력하기만 하면되니,
한 번 체크해보는 것도 나쁘지 않은 것 같다.
for (int i = 0; i < 4; i++)
printf("%d", selected_arr[i]);
for (int i = 0; i < 5; i++)
pritnf("%d", arr[i]);
이제 비교하는 과정만 남았다.
각각의 입력값을 받았던 selected_arr
와, arr
를
반복문을 돌면서 그 값들을 비교를 하는데,
만약 중복되는 것이 있다면
조건문으로 처리를 해주면 된다.
위에서 언급했듯이,
두 값이 같은 경우에는 변수 counts
를 -1
씩 연산해주면 된다.
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
if (selected_arr[i] == arr[j])
counts--;
}
}
마지막으로, 변수 counts
의 값을 출력해고,
그 값이 옳은지 확인해주면 된다.
printf("%d", counts);