소스코드
#include <stdio.h>
#include <string.h>
int main (){
char a[100];
int index[26];
int i, b;
for (i=0; i<26; i++){
index[i] = -1;
}
scanf("%s", &a);
for(i=0; i<strlen(a); i++) {
b = a[i] - 97;
if (index[b] == -1) index[b] = i;
}
for (i=0; i<26; i++){
printf("%d ", index[i]);
}
}
해설
일단... ASCII CODE 기준으로, 알파벳 소문자를 숫자로 (0~25) 변환하려면 97을 빼면 된다. 소문자와 대문자를 변환하려면 32를 더하고 빼면 된다. 소문자가 더 크다.
참고로 int자료형을 char자료형으로 상호 변환할때는 48을 빼고 더하면 됨.
새싹문제치고 어려웠는데... 일단 문자열로 주어진 문자 받고, 26칸 배열을 만든 뒤 모두 -1로 설정. 문자에 해당하는 26칸 배열은 위치 (i) 로 값을 바꾸어서 풀었다.
'solving > C, C++' 카테고리의 다른 글
[백준] 2798번 블랙잭 (0) | 2022.08.29 |
---|---|
[백준] 1157번 단어 공부 (0) | 2022.08.28 |
[백준] 3052번 나머지 (다시 풀어볼 것) (0) | 2022.08.27 |
[백준] 2908번 상수 (atoi, sprintf, 문자열 선언) (0) | 2022.08.27 |
[백준] 2577번 숫자의 개수 (sprintf) (0) | 2022.08.27 |