https://www.acmicpc.net/problem/10809
문제 해결 과정
착안
요소의 수가 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 |
댓글