코딩/백준 BOJ
[백준/C언어] 7568번 - 덩치
로디K
2022. 2. 7. 16:50
백준 웹사이트 "7568번 - 덩치" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
7568번: 덩치
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩
www.acmicpc.net
소스 코드
#include <stdio.h>
int main(void){
int N;
scanf("%d", &N);
// 1. 각 학생의 덩치를 저장하는 배열을 만든다.
int bulk [N][2];
for(int i=0; i<N; i++){
scanf("%d %d", &bulk[i][0], &bulk[i][1]);
}
// 2. 각 학생의 덩치 등수를 저장하는 배열을 만든다.
int rank [N];
for(int i=0; i<N; i++){
rank[i]=1;
}
// 3. 각 학생에 대해, 덩치가 더 큰 학생의 수를 구한다.
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if(j==i)
continue;
if(bulk[j][0]>bulk[i][0] && bulk[j][1]>bulk[i][1])
rank[i]++;
}
}
// 4. 배열 출력
for(int i=0; i<N; i++){
printf("%d ", rank[i]);
}
}
문제 풀이
네 단계를 거쳐 코드를 완성시킬 수 있습니다.
1. 각 학생의 덩치를 저장하는 배열을 만듭니다.
bulk[N][2]는 이중배열로, N명의 학생이 있으면 i번째 학생에 대해 bulk[i][0]은 체중, bulk[i][1]은 키를 의미합니다. 체중, 키를 위한 배열을 각각 선언하여 저장하는 것도 괜찮습니다!
2. 각 학생의 덩치 등수를 저장하는 배열을 만듭니다.
rank는 덩치 등수를 저장하는 배열입니다. 우선, 모든 학생의 덩치 등수를 1로 초기화합니다.
3. 각 학생에 대해, 덩치가 더 큰 학생의 수를 구합니다.
어떤 학생보다 덩치가 더 큰 학생이 있다면, 그 학생의 등수는 1만큼 커지게 됩니다. 따라서 어떤 학생과, 그 학생 이외의 모든 학생들을 비교해보아 덩치가 더 큰 학생들의 수를 구하면 그 학생의 등수를 계산할 수 있습니다. 이렇게 계산된 각 학생의 덩치 등수를 rank에 저장합니다.
4. 배열을 출력합니다.
최종적으로 rank를 출력하면 원하는 출력을 얻게 됩니다.
반응형