Q. 상근이와 친구들은 MT에 가서 아래 설명과 같이 재미있는 게임을 할 것이다.
각 플레이어는 1이상 100 이하의 정수를 카드에 적어 제출한다. 각 플레이어는 자신과 같은 수를 쓴 사람이 없다면, 자신이 쓴 수와 같은 점수를 얻는다. 만약, 같은 수를 쓴 다른 사람이 있는 경우에는 점수를 얻을 수 없다.
상근이와 친구들은 이 게임을 3번 했다. 각 플레이어가 각각 쓴 수가 주어졌을 때, 3번 게임에서 얻은 총 점수를 구하는 프로그램을 작성하시오.
입력.
첫째 줄에 참가자의 수 N이 주어진다. (2 ≤ N ≤ 200) 둘째 줄부터 N개 줄에는 각 플레이어가 1번째, 2번째, 3번째 게임에서 쓴 수가 공백으로 구분되어 주어진다.
출력.
각 플레이어가 3번의 게임에서 얻은 총 점수를 입력으로 주어진 순서대로 출력한다.
이차원 배열의 요소의 값을 같은 행에 해당하는 요소의 값과 하나씩 비교하는 방법을 사용했다.
비교한 결과, 값은 값이 있으면 0으로 바꾸어 주었다.
그리고 이 문제에서는 컴파일 에러가 발생했는데, 주로 헤더 파일에 문제가 있을 때 나타난다고 한다.
알아보니 C언어는 bool 자료형이 없다는 것을 알게 되었고, 아래의 두 가지 방법으로 문제를 해결하였다.
C언어에는 bool 자료형이 없기 때문에 1을 true, 0을 false로 지정해서 한다. 다음은 C언어에서 bool 자료형을 사용하는 방법이다.
1. stdbool.h 라는 헤더파일을 추가한다. ex) #include <stdbool.h> bool b; b = true; |
2. bool 이 아닌, _Bool 을 자료형으로 선언한다. ex) _Bool b; b = 1; |
#include <stdio.h>
#include <stdbool.h>
int main(void) {
int i, j, k, n;
bool check;
int input[200][3];
int score[200];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %d %d", &input[i][0], &input[i][1], &input[i][2]);
}
for (i = 0; i < 3; i++) {
for (j = 0; j < n; j++) {
check = false;
for (k = j + 1; k < n; k++) {
if (input[j][i] == input[k][i]) {
input[k][i] = 0;
check = true;
}
}
if (check)
input[j][i] = 0;
}
}
for (i = 0; i < n; i++) {
score[i] = input[i][0] + input[i][1] + input[i][2];
printf("%d\n", score[i]);
}
return 0;
}
#include <stdio.h>
int main(void) {
int i, j, k, n;
_Bool check;
int input[200][3];
int score[200];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %d %d", &input[i][0], &input[i][1], &input[i][2]);
}
for (i = 0; i < 3; i++) {
for (j = 0; j < n; j++) {
check = 0;
for (k = j + 1; k < n; k++) {
if (input[j][i] == input[k][i]) {
input[k][i] = 0;
check = 1;
}
}
if (check)
input[j][i] = 0;
}
}
for (i = 0; i < n; i++) {
score[i] = input[i][0] + input[i][1] + input[i][2];
printf("%d\n", score[i]);
}
return 0;
}
'백준 알고리즘' 카테고리의 다른 글
[C언어] 10709번 (0) | 2020.05.14 |
---|---|
[C언어] 5618번 (0) | 2020.05.13 |
[C언어] 10817번 (0) | 2020.04.25 |
[C언어] 10250번 (0) | 2020.04.17 |
[C언어] 1712번 (0) | 2020.04.15 |