DINGA DINGA
728x90

www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 

코드

#include <stdio.h>

main() {
	char s[101];	//단어를 저장하는 배열
	char* p = &s;	//포인터 p에 s의 주소 저장
	int check[26];	//알파벳 체크 결과를 저장하는 배열
	for (int i = 0; i < 26; i++)
		check[i] = -1;
	scanf("%s", p);
	for (int i = 0; *p != '\0'; i++, p++) {
		if (check[*p - 'a'] != -1)
			continue;
		check[*p - 'a'] = i;
	}
	for (int i = 0; i < 26; i++)
		printf("%d ", check[i]);
}

 

설명

 

첫 번째 for문에서 check배열을 -1로 초기화한다.

단어를 p에 입력 받는다.

두 번째 for문에서 단어 끝을 만날 때까지 알파벳을 체크한다.

체크하는 알파벳에 해당하는 check 인덱스인 check[*p-'a']가 -1이 아니면 이미 단어의 앞에서 해당 알파벳이 나왔던 것이므로 continue해준다.

check[*p-'a']가 -1이면 해당 알파벳이 단어의 앞에서 나오지 않았던 것이므로 현재 알파벳의 위치인 i를 check[*p-'a']에 저장한다.

마지막 for문으로 결과를 출력한다.

728x90

'C & C++ > BOJ' 카테고리의 다른 글

[백준] 3046번: R2  (0) 2021.03.12
[백준] 2798번: 블랙잭  (0) 2021.03.11
[백준] 1834번: 나머지와 몫이 같은 수  (0) 2021.03.04
[백준] 1731번: 추론  (0) 2021.03.03
[백준] 2908번: 상수  (0) 2021.02.25