https://www.acmicpc.net/problem/10809
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
string input;
cin >> input;
vector<int> v(26, -1);
for (int i = 0; i < input.length(); i++)
{
int index = input[i] - 'a';
if(v[index] == -1)
v[index] = i;
}
for (int i = 0; i < 26; i++)
cout << v[i] << " ";
return 0;
}
각 알파벳의 위치를 담는 알파벳 배열 v를 선언했고 -1로 다 초기화해주었다. 아무것도 안하면 -1이니까.
string의 각 글자마다 접근해 -'a' 를 해줌으로써 간격이니 해당 순서만큼의 숫자고 이를 int형의 index로 저장한 다음
해당 알파벳 배열 v로 가서 해당 글자 index로 넣어주었다.
여기서 if(v[index] == -1)이 중요한데, 문제 조건이 처음 등장하는 위치를 나타냈기에,
처음 등장할 때 상태는 원상태인 -1이므로 이를 한번 바꿔주면 된다.
네이버 블로그 실수칸에 char을 int로 바꾸는 것에 적어두었다.
다시 간단히 말하면 - '해당 문자의 가장 작은 값'을 해주면 해당 간격만큼의 정수값이 나오고 이것이 우리가 원하는 값이겠지.
'백준 문제풀이 > 브론즈2' 카테고리의 다른 글
백준 2231번 - 분해합 (0) | 2021.12.17 |
---|---|
백준 2292번 - 벌집 (0) | 2021.11.30 |
백준 1173 - 운동 (0) | 2021.11.10 |
백준 1264번 - 모음의 개수 (0) | 2021.10.26 |
백준 1152번 - 단어의 갯수 (0) | 2021.10.20 |