728x90
https://www.acmicpc.net/problem/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 ");
}
}
문제풀이
- char S[100] = {0} : 입력받을 단어의 길이가 100을 넘지 않기 때문에 크기가 100인 배열을 선언해줍니다.
- for (int i=97; i<=122; i++) : 아스키코드에서 영어소문자인 97번~122번까지 for문을 통해 변수 i를 증가시키며 'a'~'z'까지 표현합니다.
- int j=0 : while 문에서 문자열의 인덱스를 증가시키며 아아스키코드값인 i와 비교해줄 j를 선언
- while (S[j] != 0) : 문자열의 끝까지 반복합니다.
- if (S[j] == (char)i) break : 만약 입력받은 문자열과 아스키코드 값이 같으면 while문을 벗어나 문자열의 순서를 출력한다. => printf("%d", j)
- j++ : 위 조건문에서 해당 조건이 아닐 시 변수(문자열의 요소)를 증가시킨다.
- else printf("-1") : 만약 문자열에 해당 알파벳이 존재하지 않으면 -1을 출력해준다.
예제
728x90
'백준(BaekJoon)' 카테고리의 다른 글
[BaekJoon/C] No.2563 : 색종이 (0) | 2024.05.17 |
---|---|
[BaekJoon/C] No.2908 : 상수 (0) | 2024.05.15 |
[BaekJoon/C] No.10988 : 팰린드롬인지 확인하기 (0) | 2024.05.08 |
[BaekJoon/C] No.11022 : A+B-8 (0) | 2024.05.08 |
[BaekJoon/C] No.2743 : 문자열 길이 재기 (0) | 2024.04.30 |