백준C (문자열)

쿵ㅇ양·2023년 12월 17일

알고리즘

목록 보기
17/18

백준10809-알파벳찾기

엄청 당황스러웠던!!

Q알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

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

int main() {
    char s[100];
    int alphabet[26], len, index;
    
    for (int i = 0; i < 26; i++) {
        alphabet[i] = -1;
    }
    
    scanf("%s", s);
    
    len = strlen(s);
    for (int i = 0; i < len; i++) {
        index = s[i] - 'a';
        if (alphabet[index] == -1) {
            alphabet[index] = i;
        }
    }
    
    for (int i = 0; i < 26; i++) {
        printf("%d ", alphabet[i]);
    }
    
    return 0;
}

1.단어 s의 길이가 100을 넘지 않는다
->문자열 크기 s[100]으로 초기화
2.문자열 알파벳a,b,c..를 아스키코드 이용해서 숫자로 변환
-> 'a' 빼주기
->비슷한 : 숫자문자형을 아스키코드로 변환 '0' 빼주기(백준11720)

int형의 범위제한에 의해 문자열로 숫자를 입력받고 이를 정수형으로 변환하기 위해
 num = str[i] -'0';
  • 알고리즘
    문자열의 알파벳 위치를 나타내는 index 구하기
    그 index에 존재하는 알파벳의 문자열 위치로 값 초기화
profile
개발을 공부하고 있는 대학생

0개의 댓글