SteffenLee

[BOJ]10809 - 알파벳 찾기 [C++] 본문

Problem Solving/BOJ

[BOJ]10809 - 알파벳 찾기 [C++]

SteffenLee 2022. 2. 16. 03:59

안녕하세요. 오늘은 백준 브론즈 2문제인 알파벳 찾기를 풀이해보겠습니다.

알파벳 소문자로만 데이터가 주어지고, 해당 데이터에서 처음 알파벳이 나오는 지점을 저장해주고 출력해주는 문제입니다.

 

이 문제에서 핵심은 알파벳이 '처음'으로 등장하는 위치를 저장해주는 것이 중요하다고 생각했습니다.

그래서 저 같은 경우 위치를 저장해주는 배열을 애초에 -1로 초기화하고, 해당 위치 배열의 값이 -1이 아니면

건너뛰도록 했습니다.

 

코드를 보겠습니다.

#include<iostream>
#include<string>
using namespace std;
int main() {
	string str;
	int arr[100];
	char alpa[26] = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
	int size = 0, flag = 0;

	cin >> str;
	size = str.size();

	for (int i = 0; i < 100; ++i)
		arr[i] = -1;

	for (int i = 0; i < size; ++i) {
		for (int j = 0; j < 26; ++j) {//알파벳 탐색
			if (str[i] == alpa[j]) {//일치
				if (arr[j] == -1) {
					if (i == 0) {//첫번째 인덱스
						arr[j] = 0;
						break;
					}
					else {
						arr[j] = i;
						break;
					}
				}
			}
		}
	}

	for (int i = 0; i <26; ++i)
		cout << arr[i] << " ";
}

감사합니다.

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ]5585 - 거스름돈[C++]  (0) 2022.02.05
[BOJ]1026 - 보물 [C++]  (0) 2022.02.02
[BOJ]11399 - ATM [C++]  (0) 2022.01.31
[BOJ]8393 - 합 [C++]  (0) 2022.01.31
[BOJ] 1924 - 2007년[C++]  (0) 2022.01.27
Comments