-
백준 1302번 : 베스트셀러 (C 언어)c c++ 언어 공부 2023. 8. 23. 11:11
https://www.acmicpc.net/problem/1302
1302번: 베스트셀러
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct {char name[51];int count;} arr;int main() {int n;scanf("%d", &n);char na[51];arr a[1001];int num = 0;for (int i = 0; i < n; i++) {scanf("%s", na);int found = 0;for (int j = 0; j < num; j++) {if (strcmp(na, a[j].name) == 0) {a[j].count++;found = 1;break;}}if (!found) {strcpy(a[num].name, na);a[num].count = 1;num++;}}int maxCount = 0;char bestBook[51];for (int i = 0; i < num; i++) {if (a[i].count > maxCount || (a[i].count == maxCount && strcmp(a[i].name, bestBook) < 0)) {maxCount = a[i].count;strcpy(bestBook, a[i].name);}}printf("%s\n", bestBook);return 0;}cs 문제 설명: 김형택은 탑문고의 직원으로, 오늘 팔린 책 중에서 가장 많이 팔린 책의 제목을 찾아야 합니다. 입력으로는 오늘 팔린 책의 개수(N)와 각 책의 제목이 주어집니다. 책의 제목은 최대 50자의 알파벳 소문자로 이루어져 있습니다. 가장 많이 팔린 책이 여러 개일 경우, 사전 순으로 가장 앞선 책의 제목을 출력해야 합니다.
코드 설명:
- 구조체 arr 정의: 구조체 arr는 책의 제목과 해당 책의 판매 개수를 저장합니다.
- 메인 함수:
- 입력을 받고 배열과 변수를 초기화합니다.
- 입력된 책의 제목을 배열 a에 저장하고, 이미 저장된 책이라면 판매 개수를 증가시키고, 처음 나온 책이라면 배열에 추가합니다.
- 가장 많이 팔린 책 찾기:
- maxCount와 bestBook 변수를 사용하여 가장 많이 팔린 책의 정보를 추적합니다.
- 반복문을 통해 배열 a를 순회하면서 판매 개수가 현재까지 최대 개수보다 많거나, 개수가 같으면서 책 제목이 사전 순서로 더 앞에 있을 때 최대 값을 업데이트합니다.
- 결과 출력: 가장 많이 팔린 책의 제목인 bestBook을 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1439번 : 뒤집기 (C 언어) (0) 2023.08.24 백준 2485번 : 가로수 (C 언어) (0) 2023.08.24 백준 2822번 : 점수 계산(C 언어) (0) 2023.08.23 백준 1343번 : 폴리오미노(C 언어) (0) 2023.08.22 백준 11557번 : Yangjojang of The Year(C 언어) (0) 2023.08.22