[첫번째 생각]

배열을 사용해서 알파벳을 저장해두고 입력받은 문자열을 하나하나 매칭시키면 되겠다.

 

[문제점 발생]

어떻게 하면 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)를 이용하자.

+ Recent posts