티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 10809번 알파벳 찾기

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

알파벳 소문자로 이루어진 단어 S가 주어짐

각각의 알파벳이 단어에 포함된 경우 처음 등장하는 위치, 없으면 -1 을 출력

 

2. 풀이

문자열을 입력받을 char 배열 s 와 알파벳 위치 기록용 int 배열 a 를 선언합니다.

int 형 배열을 한 번에 -1 로 초기화할 수 없으므로, for 문을 사용하여 초기화를 해줍니다.

 

배열이 2개 등장하여 index 가 혼동될 수 있기 때문에,

char 배열의 index 는 k, int 배열의 index 는 i 로 통일했습니다.

 

이 외에 복잡한 풀이는 따로 없으므로 아래 코드 첨부로 설명을 마치겠습니다.

 

3. 코드

#include <stdio.h>

int main() {
	char s[100];
	scanf("%s", &s);

	int a[26];
	for (int i = 0; i < 26; ++i) {
		a[i] = -1;
	}

	int k = 0;
	int i;

	while (s[k]) {
		i = s[k] - 97;
		if (a[i] == -1) a[i] = k;
		++k;
	}

	for (int i = 0; i < 26; ++i) {
		printf("%d ", a[i]);
	}

	return 0;
}

* ASCII 값에 따라 'a' 는 97, 'b' 는 98, ... 이므로 해당 문자에 -97 하여 0 부터 25 사이의 숫자로 변환할 수 있습니다.

728x90
반응형
댓글