-
백준 : 20291번 (C 언어)c c++ 언어 공부 2023. 8. 31. 13:19
https://www.acmicpc.net/problem/20291
20291번: 파일 정리
친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를
www.acmicpc.net
Code:
1234567891011121314151617181920212223242526272829303132333435#include <stdio.h>#include <string.h>#include <stdlib.h>int compare(const void* a, const void* b){return strcmp((char*)a, (char*)b);}int main() {char result[50000][101];int arr[50000] = { 0, };int num = 0;char string[101];char* dot;int cnt = 0;scanf("%d", &num);for (int i = 0; i < num; i++) {scanf("%s", string);dot = strtok(string, ".");dot = strtok(NULL, ".");strcpy(result[i], dot);}qsort(result, num, sizeof(result[0]), compare);for (int i = 0; i < num; i++) {if (strcmp(result[i], result[i + 1]) == 0) {arr[cnt]++;}else if (strcmp(result[i], result[i + 1]) != 0) {printf("%s %d\n", result[i], arr[cnt] + 1);cnt++;}}return 0;}cs 문제 설명:
- 스브러스는 중고로 산 노트북을 켜서 바탕화면에 있는 파일들을 확인합니다.
- 바탕화면 파일들 중에는 보물 정보가 포함되어 있습니다. 이 보물 정보는 파일 확장자를 통해 확인할 수 있습니다.
- 스브러스는 파일이 너무 많아서 포기하고, 보물 정보의 절반을 얻기 위해 파일 정리를 요청합니다.
- 파일을 확장자 별로 정리하고, 각 확장자 파일의 개수를 알려주어야 하며, 확장자 이름은 사전 순으로 정렬되어야 합니다.
코드 설명:
- 파일 확장자 추출: 각 파일 이름에서 확장자를 추출하기 위해 strtok 함수를 사용합니다.
- 확장자와 파일 개수 기록: 추출한 확장자를 배열에 저장하고 해당 확장자의 파일 개수를 배열에 기록합니다.
- 정렬: qsort 함수를 사용하여 확장자 배열을 사전 순으로 정렬합니다.
- 중복 확장자 처리: 정렬된 배열을 순회하면서 중복된 확장자를 처리하고 개수를 세어 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1264번 : 모음의 개수 (C 언어) (0) 2023.09.01 백준 1547번 : 공 (C 언어) (0) 2023.09.01 백준 16931번 : 겉넓이 구하기 (C 언어) (0) 2023.08.30 백준 5635번 : 생일 (C 언어) (0) 2023.08.30 백준 11170번 : 0의 개수(C 언어) (0) 2023.08.29