문준영
새벽 코딩
문준영
전체 방문자
오늘
어제
  • 분류 전체보기
    • 웹 개발
    • JAVA
      • 기본 문법 내용 정리
      • 함수 내용 정리
      • 쉽게 배우는 자바 프로그래밍 문제 풀이
    • HTML
      • HTML
      • CSS
      • 문제풀이
    • JavaScript
    • MYSQL
    • C
      • 기본 문법 내용 정리
      • 백준 알고리즘 (c언어)
      • 자료구조
    • Python
      • 참고 알고리즘
      • 기본 문법 내용 정리
      • 자료구조 내용 정리
      • 백준 알고리즘 (파이썬)
    • 깃허브
    • 멀티잇 풀스택

티스토리

hELLO · Designed By 정상우.
문준영

새벽 코딩

C/백준 알고리즘 (c언어)

문자열 practice 02_단어 공부

2021. 7. 7. 15:54

백준 1157번

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

1. 문제

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

 

2. 내가 작성한 알고리즘

 

#include <stdio.h>

#pragma warning (disable:4996)

#include <string.h>

int main() {

 

char input[1000000];

int i,j,len,max;

int al[26]={0, };

int this = 0;

int count = 0;

scanf("%s", input);

len = strlen(input);

for (i = 'a'; i <= 'z'; i++) { //a~z 까지 반복

for (j = 0; j < len; j++) { //입력한 len 값 만큼 반복

if (i == input[j]) 

al[i - 'a']+=1; // 배열이 정수형이므로 i,a 둘다 아스키 코드로 반환된다.

}

}

for (i = 'A'; i <= 'z'; i++) { // A~Z 까지 반복

for (j = 0; j < len; j++) {

if (i == input[j])

al[i-'A']+=1; // 대문자든 소문자든 같은 배열에 넣기 위함

}

}

max = al[0]; // 가장 큰 값을 al[0]으로 임의로 지정

 

for (i = 1; i < 26; i++) {

if (max < al[i]) 

max = al[i]; //max 값을 찾음

this = i; // 그 max 값에 인덱스 번호를 추출

 

}

 

for (i = 0; i < 26; i++) {

if (max == al[i]) // 값이 여러개 나올때를 대비해 문자열의 수를 알기 위한 조건문

count+=1;

}

if (count > 1) {

printf("?");

}

else {

printf("%c", this + 'A'); // 정수형이므로 추출한 this(위치) + 'A'(대문자를 추출하기 위해) 로 입력한다.

}

return 0;

}

 

3. 이번 알고리즘을 통해 배운 점

 

아스키 코드를 이용하여 알고리즘을 푸는 센스가 필요한 것 같다.

모든 배열에 0이란 값을 넣어주기 위해서는 자료형 변수[크기]={0, }; 이다.

소문자(변수)-'a' 와 대문자(변수)-"A" 는 같다. 대소문자 구분없이 같은 배열에 저장하기 위해 사용한다.

출력할 때도 마찬가지로 내가 구하는 알파벳 순서를 변수로 두고 (a=0 , b=1, c=2, d=3 ....)

%c 로 변수+'a' 를하면 소문자가 변수+'A'를 하면 대문자가 출력된다.

strlen(배열)은 배열의 크기를 알려주는 함수이다. strlen(배열[인덱스번호])는 불가하다.

문자의 길이를 알 수있는 방법은 count 변수를 두고 배열을 이용하여 count 변수의 값으로 문자의 길이를 추출할 수 있다.

 

 

 

'C > 백준 알고리즘 (c언어)' 카테고리의 다른 글

문자열 practice 04_단어의 개수  (0) 2021.07.09
문자열 practice 01_ 알파벳 찾기  (0) 2021.07.06
함수 practice 02_한수  (0) 2021.07.01
함수 practice 01_셀프 넘버  (0) 2021.07.01
1차원배열 practice 03_OX퀴즈  (0) 2021.06.30
    'C/백준 알고리즘 (c언어)' 카테고리의 다른 글
    • 문자열 practice 04_단어의 개수
    • 문자열 practice 01_ 알파벳 찾기
    • 함수 practice 02_한수
    • 함수 practice 01_셀프 넘버
    문준영
    문준영
    공부한 내용 정리!

    티스토리툴바