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 |
댓글