[첫번째 생각]
배열을 사용해서 알파벳을 저장해두고 입력받은 문자열을 하나하나 매칭시키면 되겠다.
[문제점 발생]
어떻게 하면 b를 2번째 위치로 a를 1번째 위치로 옮길 수 있을까?
[두번째 생각]
아!, a는 0으로 b는 1로 c는 2로 ...즉 받는 문자에 'a'를 빼주면 되겠다.
그러니깐 입력받는 문자를 S[i]라고 하면 alphabet[S[i] -'a'] = i;
#include <stdio.h>
#include <string.h>
#define ALPHABET_NUM 26
int main(int argc, const char * argv[]) {
int i;
int alphabet[ALPHABET_NUM];
char S[100];
scanf("%s",S);
for(i = 0; i < ALPHABET_NUM; i++)
alphabet[i] = -1;
for(i = 0; i < strlen(S); i++){
if(alphabet[S[i] - 'a'] == -1)
alphabet[S[i] - 'a'] = i;
}
for(i = 0; i < ALPHABET_NUM; i++)
printf("%d ",alphabet[i]);
return 0;
}
오키 풀었당
중간에 if(alphabet[S[i] - 'a'] == -1)코드가 있어야지 중복된 경우 첫 인덱스 값을 넣을 수 있다.
[훨씬 쉬운 코드]
없다 난 천재다
[결론]
문자열의 길이구하기
size = sizeof(S)/sizeof(char)로 하면 최대길이가나온다.
따라서 strlen(S)를 이용하자.
'이제는 사용하지 않는 공부방 > Algorithm' 카테고리의 다른 글
백준 8단계 단어의 개수 (0) | 2020.04.18 |
---|---|
백준 8단계 문자열 반복 (0) | 2020.04.16 |
백준 8단계 숫자의 합 (0) | 2020.04.16 |
[알고리즘] Radix Sort 기수정렬 (1) | 2020.03.01 |
[알고리즘] Merge Sort 병합정렬 (0) | 2020.02.23 |