백준 10809번

신형석·2022년 3월 16일
0

알고리즘 풀이

목록 보기
18/41

백준 10809번은 주어진 단어에서 처음 쓰이는 알파벳의 위치를 출력하는 프로그램이다. 같은 알파벳이 두번 이상 입력받을 경우, 맨 앞의 위치를 출력한다.

우선, 입력받는 문자열의 크기는 100을 넘지 않으므로, 크기 100짜리 배열 s를 만들었다.
그리고, 또다른 배열 alphabet을 만들어 전체를 -1로 초기화했다.

s를 한 칸씩 읽으면서, 아스키 코드를 이용해 alphabet에 위치를 넣는 코드이다.

위의 배열은 s 배열이고, 밑의 배열은 alphabet 배열이다.
이를 코드로 구현하면 다음과 같다:

#include <stdio.h>
#include <string.h>

int main(void) {
	char s[100];
	scanf("%s", s);
	int alphabet[27];
	for (int i = 0; i < 26; i++) {
		alphabet[i] = -1;
	}
	for (int i = 0; i < strlen(s); i++){
		if (alphabet[s[i] - 97] == -1) { // 맨 처음 들어가는 알파벳일 경우
			alphabet[s[i] - 97] = i;
		}
	}
	for (int i = 0; i < 26; i++) {
		printf("%d ", alphabet[i]);
	}
	return 0;
}

같은 알파벳이 두 번 있을 경우, 일찍이 먼저 나온 알파벳의 순서가 먼저 저장되있으므로, 값이 -1이 될 수가 없다.

0개의 댓글