-- 예전 기록/BOJ

[ BOJ ] 2386 : 도비의 영어 공부 ( BRONZE 2 ) / C, Python

rejo 2023. 11. 6. 10:50

문제

꿍은 도비의 자유를 위해 영어를 가르치기로 결심했다. 하지만 도비는 바보라 ABC부터 배워야 한다.

그래서 꿍은 영어 문장과 알파벳 하나가 주어지면 그 알파벳이 문장에서 몇 번 나타나는지를 세는 문제들을 내주었다. 하지만 도비는 마법사고 컴공도 마법사다.

여러분은 도비를 위해 문제의 답을 알려주는 프로그램을 만들수 있을것이다!

입력

입력은 몇 개의 줄들로 이루어진다.

각 줄에는 하나의 소문자와 영어 문장이 공백으로 구분되어 주어진다.

각 문장은 길이가 1에서 250이며 입력의 마지막은 #이다.

출력

출력의 각 줄은 입력으로 주어진 소문자와 그 소문자 알파벳이 나타난 횟수로 이루어진다. 이때 문장에서 해당 알파벳이 소문자로 나타나던 대문자로 나타나던 모두 세야 한다.

풀이 과정

# 글자가 입력될 때 까지, 소문자와 영어 문장을 입력받고 해당 소문자가 영어 문장 안에서 얼마나 등장하는지를 센다.

한 문장을 통째로 입력받고, 소문자(0번째 글자)와 띄어쓰기(1번째 글자)를 건너뛴 2번째 글자부터 탐색을 시작해도 된다.

 

C

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

char str[300];
int main(void) {
    while (1) {
        gets(str);
        if (str[0] == '#') break;

        int count = 0;
        for (int i = 2; i < strlen(str); i++) {
            if (str[i] == str[0] || str[i] + 32 == str[0]) count += 1;
        }

        printf("%c %d\n", str[0], count);
    }
    return 0;
}

Python

import sys
input = sys.stdin.readline 

while True:
    string = input().rstrip()
    if string[0] == '#': break

    now = string[0]
    string = string[2:].lower()
    print(now, string.count(now))