일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- php 프로그래밍 입문 솔루션
- Flutter
- SWEA
- 배열
- Java
- C
- 페이코 추천인코드
- 자바 스프링
- 플러터
- 페이코 친구코드
- php 프로그래밍 입문 3판
- php 프로그래밍
- php 프로그래밍 입문
- php 프로그래밍 입문 문제풀이
- 플러터 개발환경 설정
- 페이코 초대코드
- C언어
- php
- 페이코 추천인
- 스프링
- spring
- JAVA SPRING
- 한정 분기
- 최단 경로
- 파이썬
- 자바
- 백준
- php 프로그래밍 입문 연습문제
- php 프로그래밍 입문 예제
- programmers
Archives
- Today
- Total
01-03 07:25
ImJay
[C언어] 백준 1157번 : 단어 공부 본문
반응형
백준 1157번 : 단어 공부
- 사용언어 : C언어
1. 문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
2. 코드
#include <stdio.h>
#include <limits.h>
#include <string.h>
#define num 1000001
int main(void) {
char apb[num];
int count[123] = {0,};
int max = INT_MIN;
int max_apb, div=0, len;
scanf("%s", apb);
len = strlen(apb);
for(int i=0; i<len; i++) {
for(int ascii=65; ascii < 91; ascii++) if(ascii==apb[i]) count[ascii]++;
for(int ascii=97; ascii < 123; ascii++) if(ascii==apb[i]) count[ascii-32]++;
}
for(int ascii=65; ascii<91; ascii++)
if(count[ascii] > max) {
max = count[ascii];
max_apb = ascii;
}
for(int ascii=65; ascii<91; ascii++) if(max == count[ascii]) div++;
if(div > 1) printf("?");
else printf("%c", max_apb);
}
3. 풀이
조잡합니다 !! 저랑 비슷한 방향으로 짜신 분만 참고해주세요 ㅠㅠ 절대 좋은 코드가 아닙니다.
문제에서 가장 많이 사용된 알파벳을 구하므로,
입력한 문자를 아스키코드와 비교하여 일치할 시 count해줍니다.
이 때, 알파벳 순서대로 count[0]은 A의 갯수로 세주었습니다.
대소문자 구분을 하지 않기 때문에 소문자일 경우 -32를 해주어 대문자와 통일시켜 세주었습니다.
다음은 최대최소 구분하는 스크립트를 배웠기 때문에 같은 방법으로 max를 구해줍니다.
그리고 ! 가장 많이 사용된 알파벳이 여러개일 경우 , div++로 구분을 해주었습니다.
마지막 출력에서 div가 1보다 클 경우, 아닐 경우로 문제에서 원하는 출력을 해주었습니다.
반응형
'백준 - C, C++ > 07. 문자열' 카테고리의 다른 글
[C언어] 백준 2908번 : 상수 (0) | 2020.10.21 |
---|---|
[C언어] 백준 1152번 : 단어의 개수 (0) | 2020.10.21 |
[C언어] 백준 2675번 : 문자열 반복 (10) | 2020.10.17 |
[C언어] 백준 10809번 : 알파벳 찾기 (0) | 2020.10.15 |
[C언어] 백준 11720번 : 숫자의 합 (0) | 2020.10.12 |
Comments