백준(BaekJoon)

[BaekJoon/C] No.10809 : 알파벳 찾기

ekdnjs510 2024. 5. 15. 14:06
728x90

https://www.acmicpc.net/problem/10809

 

No.10809 문제

 

문제해석

 

  • 알파벳 소문자들로만 이루어진 단어를 입력받을 문자열 S 선언
  • 아스키코드에서 97~122번은 영어 소문자에 해당함을 이용
  • 단어 포함 => 처음 등장하는 위치(순서) : 변수 j, (S[j] == (char)i) 이면 printf("%d", j)
  • 단어 미포함 => -1 출력 : else printf("-1")

 

소스코드

#include <stdio.h>

int main(void)
{
    char S[100] = { 0 };
    scanf("%s", S);
    for (int i = 97; i <= 122; i++) {
        int j = 0;
        while (S[j] != 0) {
            if (S[j] == (char)i) break;
            j++;
        }
        if (S[j] == (char)i) printf("%d ", j);
        else printf("-1 ");
    }
}

 

문제풀이

 

  1. char S[100] = {0} : 입력받을 단어의 길이가 100을 넘지 않기 때문에 크기가 100인 배열을 선언해줍니다.
  2. for (int i=97; i<=122; i++) : 아스키코드에서 영어소문자인 97번~122번까지 for문을 통해 변수 i를 증가시키며 'a'~'z'까지 표현합니다.
  3. int j=0 : while 문에서 문자열의 인덱스를 증가시키며 아아스키코드값인 i와 비교해줄 j를 선언
  4. while (S[j] != 0) : 문자열의 끝까지 반복합니다.
  5. if (S[j] == (char)i) break : 만약 입력받은 문자열과 아스키코드 값이 같으면 while문을 벗어나 문자열의 순서를 출력한다. => printf("%d", j)
  6. j++ :  위 조건문에서 해당 조건이 아닐 시 변수(문자열의 요소)를 증가시킨다.
  7. else printf("-1") : 만약 문자열에 해당 알파벳이 존재하지 않으면 -1을 출력해준다.

 

예제

 

 

728x90