본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 10809번: 알파벳 찾기 C언어

문제 출처: www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

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

www.acmicpc.net

1. 코드

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

int main(void)
{
	int arr[26], i, j;
	char S[100];
	
	scanf("%s", S);
	
	for(i=0; i<26; i++)
		arr[i]=-1;
		
	for(i='a'; i<='z'; i++)
	{
		for(j=0; j<strlen(S); j++)
		{
			if(i==S[j])
			{
				arr[S[j]-'a'] = j;
				break;
			}
		}
	}
	
	for(i=0; i<26; i++)
	{
		printf("%d", arr[i]);
		if(i<25)
			printf(" ");
	}
	return 0;
}

2. 느낀 점

우선 이 문제는 입력한 알파벳을 인식하고 입력된 순서의 수를 알파벳 순서로 나열된 배열에 표시하는 것인데 저 같은 경우에는 반복문을 실행할 때 알파벳을 넣고 이중 반복문으로 배열을 비교하는 방식으로 했습니다. 그리고 2번 인식하지않기위해 인식하면 break문으로 바로 반복문을 빠져나오게 했습니다.

이 문제를 풀면서 가장 어려웠던 것은 띄어쓰기 한번 더 했다는 실수를 몰랐던 것입니다. 예제를 입력하면 원활하게 잘 출력이 되는데 정답처리가 안되어서 고민하다가 설마 띄어쓰기가 문제인가 싶어서 if문으로 띄어쓰기를 맞추었더니 정답처리가 되었습니다.