max) max = count; } printf("%d\n", max); } "> max) max = count; } printf("%d\n", max); } "> max) max = count; } printf("%d\n", max); } ">

<aside> 1️⃣

문제: 1058번 친구

세계에서 가장 유명한 사람은 2-친구의 수가 가장 많은 사람

가장 유명한 사람의 2-친구 수를 출력

</aside>

#include <stdio.h>

int main() {
    int N;
    scanf("%d", &N);

    char arr[50][51];
    for (int i = 0; i < N; i++) {
        scanf("%s", arr[i]);
    }

    int max = 0;

    for (int i = 0; i < N; i++) {
        int check[50] = {0}; //i의 2-친구 여부 체크

        for (int j = 0; j < N; j++) {
            if (arr[i][j] == 'Y') {
                check[j] = 1; //접 친구
                for (int k = 0; k < N; k++) {
                    if (arr[j][k] == 'Y') {
                        check[k] = 1; //구의 친구
                    }
                }
            }
        }
        check[i] = 0; //자기 자신은 제외

        int count = 0;
        for (int j = 0; j < N; j++) {
            if (check[j]) count++;
        }
        if (count > max) max = count;
    }

    printf("%d\\n", max);
}

image.png

<aside> 2️⃣

문제: 1138번 한 줄로 서기

키가 1부터 N까지 모두 다른 사람들이 줄을 서는데 모두 자신보다 키가 큰 사람이 자신의 왼쪽에 몇 명 있는지만을 기억함

#include <stdio.h>

int main(){
    //입력 받기
    int N; 
    scanf("%d", &N);
    int arr[11];

    //서 있는 위치 넣을 배열
    int place[11];
    for(int i = 0; i < N; i++){
        scanf("%d", &arr[i]);
        place[i] = 0;
    }

    for (int i = 0; i < N; i++) { //키가 작은 사람부터 (1 ~ N)
        int left = arr[i];  //자기보다 큰 사람 수
        for (int j = 0; j < N; j++) {
            if (place[j] == 0) { //빈자리
                if (left == 0) { //건너뛸 필요가 없으면 여기 배치
                    place[j] = i + 1;
                    break;
                }
                left--; //아직 건너뛰어야 함
            }
        }
    }
    
    for(int i = 0; i < N; i++){
        printf("%d ", place[i]);
    }

}

image.png

#include <stdio.h>

int main() {
    int N;
    scanf("%d", &N);

    char arr[50][51];
    for (int i = 0; i < N; i++) {
        scanf("%s", arr[i]);
    }

    int max = 0;

    for (int i = 0; i < N; i++) {
        int check[50] = {0}; //i의 2-친구 여부 체크

        for (int j = 0; j < N; j++) {
            if (arr[i][j] == 'Y') {
                check[j] = 1; //접 친구
                for (int k = 0; k < N; k++) {
                    if (arr[j][k] == 'Y') {
                        check[k] = 1; //구의 친구
                    }
                }
            }
        }
        check[i] = 0; //자기 자신은 제외

        int count = 0;
        for (int j = 0; j < N; j++) {
            if (check[j]) count++;
        }
        if (count > max) max = count;
    }

    printf("%d\\n", max);
}