: solved.ac class 2 - silver 5
https://www.acmicpc.net/problem/7568
7568번: 덩치
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩
www.acmicpc.net
예제 입력 1
5
55 185
58 183
88 186
60 175
46 155
예제 출력 1
2 2 1 2 5
정답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
int grade = 1;
int p[50][2] = { 0, };
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &p[i][0], &p[i][1]);
}
for (int i = 0; i < n; i++) {
grade = 1;
for (int j = 0; j < n; j++) {
if (p[j][0] > p[i][0] && p[j][1] > p[i][1]) grade++;
}
printf("%d ", grade);
}
return 0;
}
해설
1. 각 사람들의 키와 몸무게를 2차원 배열에 입력받는다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
int grade = 1;
int p[50][2] = { 0, };
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &p[i][0], &p[i][1]);
}
2. 입력받은 사람의 수만큼 for문을 돈다.
for문의 첫머리에 grade 변수를 1로 초기화시켜 두고, 안에서 for문을 한 번 더 돌면서 배열을 검사한다.
'키와 몸무게가 모두 자기보다 큰 사람'이 나올 때마다 grade 변수를 1씩 증가시켜 준다.
(키나 몸무게 중 한쪽은 같고 다른 한쪽만 더 커도 덩치가 더 큰 것으로 간주한다든지 하는 조건은 없으므로
위의 조건만 적용해도 충분하다.)
안쪽 for문 순회가 끝나면 grade 값을 출력해 준다.
for문을 돌 때마다 초기화와 출력을 반복하므로 배열 등 별도의 저장용 변수는 필요하지 않다.
for (int i = 0; i < n; i++) {
grade = 1;
for (int j = 0; j < n; j++) {
if (p[j][0] > p[i][0] && p[j][1] > p[i][1]) grade++;
}
printf("%d ", grade);
}
return 0;
}
'C언어 > BAEKJOON' 카테고리의 다른 글
[백준] 10814. 나이순 정렬 (0) | 2022.05.21 |
---|---|
[백준] 1181. 단어 정렬 (0) | 2022.05.21 |
[백준] 10866. 덱 (0) | 2022.05.14 |
[백준] 1059. 좋은 구간 (0) | 2022.05.14 |
[백준] 1063. 킹 (0) | 2022.05.08 |