개발자/C or C++

백준 10809번 [C/C+]

Mosser 2021. 10. 5.
728x90
반응형

문제

해결 방법

이 문제는 먼저

1. 영어 알파벳 'a'~'z'까지의 값이 저장된 배열

2. 영어 알파벳 개수를 가진 크기의 배열(26) 사이즈의 배열 필요 (-1로 초기화)

3. input값을 저장할 char 배열이 필요

일단 입력값을 순환하면서 알파벳이 저장된 배열과 입력값의 문자가 일치하면 인덱스가 저장된 배열의 값을 input값의 인덱스로 변경하면 됩니다.

이해가 안되시면 한번 예제의 문제를 그대로 따라서 손으로 구현해보시면 쉽게 이해되실겁니다.

소스코드

 

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

using namespace std;
int main(){
	
	vector<char> alphabet(26);
	int i=0;
	char alpha='a';

	for(i=0;i<26;i++){
		alphabet[i]=alpha++;
	}
	
	vector<int> index(26);
	
	for(i=0;i<26;i++){
		index[i]=-1;	
	}

	
	
	char input[100];
	scanf("%s",&input);

	
	int len=strlen(input);  //input 입력
	for(i=0;i<len;i++){ //input의 사이즈만큼 for문 반복
		for(int j=0;j<26;j++){ // 알파벳 배열 술환
			if(input[i]==alphabet[j]){ //알파벳 배열의 문자 값과 입력값의 문자가 일치하는지 확인
				if(index[j]!=-1) //만약 인덱스의 배열의 값이 -1이 아닐경우 이미 변경되었으므로 break
					break;
				index[j]=i;  //배열의 값이 -1일경우에는 해당 인덱스를 저장
			}
		}
		
	}
	
	for(i=0;i<26;i++){
		printf("%d ",index[i]);  // 출력
	}
	printf("\n");
	

	
}

 

실행결과

반응형

'개발자 > C or C++' 카테고리의 다른 글

백준 1157번 [C/C+]  (0) 2021.10.05
백준 2675번 [C/C+]  (0) 2021.10.05
백준 11720번 [C/C+]  (0) 2021.10.05
백준 11654번 [C/C+]  (0) 2021.10.05
백준 15596번 [C/C+]  (0) 2021.10.05

댓글