본문 바로가기

코딩/백준 BOJ

[백준/C언어] 7568번 - 덩치

백준 웹사이트 "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를 출력하면 원하는 출력을 얻게 됩니다.

반응형