본문 바로가기
C++ 코딩 문제 풀이/백준

[Baekjoon] 10809번: 알파벳 찾기

by 섬댕이 2023. 5. 28.

 

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 


 

문제 해결 과정

착안

요소의 수가 26 개인 배열을 만들어, 알파벳 순으로 각 인덱스를 지정($a : 0, b : 1, \cdots, z : 25$)해 처음 나온 위치를 저장하고자 하였다. 알파벳이 중복으로 나오는 경우는 이미 처음 나온 위치가 $-1$ 이 아닌 값으로 저장되어있으므로 계산하지 않고 건너 뛰도록 구현하고자 했다.

 

구현

[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~

더보기
#include <iostream>
#include <string>

using namespace std;

int Alphabets[26];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	for (int& value : Alphabets)
		value = -1;

	string Word;
	cin >> Word;

	for (int i = 0; i < Word.length(); i++)
		if (Alphabets[(Word[i] - 'a')] == -1)
			Alphabets[(Word[i] - 'a')] = i;

	for (int c : Alphabets)
		cout << c << " ";

	return 0;
}

 

실행 결과

'C++ 코딩 문제 풀이 > 백준' 카테고리의 다른 글

[Baekjoon] 2908번: 상수  (0) 2023.05.29
[Baekjoon] 2675번: 문자열 반복  (0) 2023.05.28
[Baekjoon] 1976번: 여행 가자  (0) 2023.05.26
[Baekjoon] 1904번: 01타일  (0) 2023.05.25
[Baekjoon] 1717번: 집합의 표현  (0) 2023.05.24

댓글