문제
소스코드
#include<iostream>
#include<string>
#include<array>
constexpr int ALPHABET_LENGTH = 26;
int main() {
std::string s;
std::cin >> s;
std::array<int, ALPHABET_LENGTH> alphabet_list;
alphabet_list.fill(-1);
for (auto i = s.cbegin(); i != s.cend(); ++i) {
int index = *i - 'a';
if (alphabet_list[index] == -1)
alphabet_list[index] = i - s.begin();
}
for (auto i : alphabet_list)
std::cout << i << " ";
후기
알파벳 길이만큼 배열을 준비하고 반복자의 특성을 이용하여 현재 위치-시작 위치를 해서 위치를 구했다.
4일 만에 푸는 문제인 만큼 비교적 쉬운 걸 풀었다.
출처 및 레퍼런스
문제 링크:https://www.acmicpc.net/problem/10809
'온라인 코딩 > 문자열(String)' 카테고리의 다른 글
[백준] 2908번 상수 (0) | 2020.02.27 |
---|---|
[백준] 11720번 숫자의 합 (0) | 2020.02.25 |
[백준] 1152번 단어의 개수 (0) | 2020.02.19 |
[백준] 11654번 아스키 코드 (0) | 2020.02.16 |
[백준] 2675번 문자열 반복 (0) | 2020.02.15 |