엄청 당황스러웠던!!
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에 존재하는 알파벳의 문자열 위치로 값 초기화