-
백준 5635번 : 생일 (C 언어)c c++ 언어 공부 2023. 8. 30. 10:45
https://www.acmicpc.net/problem/5635
5635번: 생일
어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637383940#include <stdio.h>#include <stdlib.h>typedef struct {char name[15];int dd;int mm;int yyyy;}abc;int compare(const void* a, const void* b){abc* A = (abc*) a;abc* B = (abc*) b;if (A->yyyy < B->yyyy) return 1;else if (A->yyyy > B->yyyy) return -1;else{if (A->mm < B->mm) return 1;else if (A->mm > B->mm) return -1;else{if (A->dd < B->dd) return 1;else if (A->dd > B->dd) return -1;else return 0;}}}int main() {int n;scanf("%d", &n);abc arr[101] = { 0, };for (int i = 0; i < n; i++){scanf("%s %d %d %d", arr[i].name, &arr[i].dd, &arr[i].mm, &arr[i].yyyy);}qsort(arr, n, sizeof(abc), compare);printf("%s\n%s", arr[0].name, arr[n - 1].name);}cs 문제 설명:
주어진 문제는 학생들의 생일을 입력받고, 가장 어린 학생과 가장 나이가 많은 학생의 이름을 찾는 프로그램을 작성하는 것입니다. 입력으로 학생 수와 각 학생의 이름 및 생일 정보를 받아야 합니다.
코드 설명:
- typedef struct 선언: 구조체 abc를 정의합니다. 이 구조체에는 학생의 이름과 생일 정보가 포함됩니다.
- compare 함수 정의: qsort 함수에서 사용할 비교 함수를 정의합니다. 이 함수는 yyyy, mm, dd 필드를 비교하여 정렬 순서를 결정합니다.
- main 함수: 프로그램의 주요 논리를 포함하는 함수입니다.
- 먼저 학생 수인 n을 입력 받습니다.
- abc 구조체 배열 arr을 선언하고 초기화합니다.
- for 루프를 사용하여 각 학생의 이름과 생일을 입력 받습니다.
- 입력 받은 데이터를 arr 배열에 저장합니다.
- qsort 함수를 사용하여 arr 배열을 compare 함수에 따라 정렬합니다.
- 가장 어린 학생은 arr[0]에, 가장 나이가 많은 학생은 arr[n - 1]에 저장되어 있습니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 : 20291번 (C 언어) (0) 2023.08.31 백준 16931번 : 겉넓이 구하기 (C 언어) (0) 2023.08.30 백준 11170번 : 0의 개수(C 언어) (0) 2023.08.29 백준 14495번 : 피보나치 비스무리한 수열(C 언어) (0) 2023.08.29 백준 15624번 : 피보나치 수 7(C 언어) (0) 2023.08.28