DINGA DINGA
728x90

www.acmicpc.net/problem/1371

 

1371번: 가장 많은 글자

첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.

www.acmicpc.net

 

코드

#include <stdio.h>
#include <string.h>

main() {
	char s[5001];	//입력받은 문자열을 저장하는 배열
	int count[26] = { 0 };	//알파벳 개수를 세는 배열
	int max = 0;	//가장 많이 나온 알파벳 개수
	while (gets(s)) {
		for (int i = 0; i < strlen(s); i++)
			if (s[i] >= 'a' && s[i] <= 'z')		//s[i]가 알파벳 소문자인지 확인
				count[s[i] - 'a']++;		//해당 알파벳 개수 1증가
	}
		for (int i = 0; i < 26; i++)		//최다 알파벳 체크
			if (count[i] > max)
				max = count[i];
		for (int i = 0; i < 26; i++)		//알파벳 순서대로 최다 알파벳 출력
			if (count[i] == max)
				printf("%c", i + 'a');
	return 0;
}

 

설명

 

(알파벳을 세는 과정은 배열과 아스키값을 이용했다.)

우선 문자열을 gets 함수로 입력 받아 s배열에 저장한다.

첫번째 for문으로 문자열을 문자 하나하나 확인하면서 해당 문자가 알파벳 소문자이면 해당 알파벳의 개수를 1 증가시킨다.

두번째 for문으로는 가장 많이 나온 알파벳이 얼마나 나왔는지(개수) 값을 max에 저장한다.

세번째 for문으로 가장 많이 나온 알파벳을 출력한다. 여러 개일 경우 알파벳순으로 출력된다.

 

728x90

'C & C++ > BOJ' 카테고리의 다른 글

[백준] 13235번: 팰린드롬  (0) 2021.02.25
[백준] 1568번: 새  (0) 2021.02.25
[백준] 16503번: 괄호 없는 사칙연산  (0) 2021.02.19
[백준] 4673번: 셀프 넘버  (0) 2021.02.19
[백준] 1264번: 모음의 개수  (1) 2021.02.19