백준 웹사이트 "7568번 - 덩치" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#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를 출력하면 원하는 출력을 얻게 됩니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 1436번 - 영화감독 숌 (0) | 2022.02.09 |
---|---|
[백준/C언어] 1018번 - 체스판 다시 칠하기 (0) | 2022.02.08 |
[백준/C언어] 2231번 - 분해합 (0) | 2022.02.06 |
[백준/C언어] 2798번 - 블랙잭 (0) | 2022.02.05 |
[백준/C언어] 11729번 - 하노이 탑 이동 순서 (0) | 2022.02.04 |