반응형
문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
출처:https://www.acmicpc.net/problem/10809
문제 해결 과정:
- 문자열을 받고 앞에서부터 한 알파벳씩 체크한다
- 알파벳 개수가 총 26개 이므로 크기가 26인 배열을 만들고 0번째는 a이다.
- 문자열에서 받은 알파벳이 처음 나온 알파벳이면 해당 배열에 위치를 넣는다.
- 만약 처음 나온 알파벳이 아니라면 지나간다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include<iostream> #include<string> using namespace std; int main() { int alphabet[26]; string S; cin >> S; fill_n(alphabet, 26, -1); for (int i = 0; i < S.length(); i++) { int place = S.at(i) - 97; if (alphabet[place] == -1) { alphabet[place] = i; } } for (int j = 0; j < 26; j++) { cout << alphabet[j]<<" "; } cout << endl; return 0; } | cs |
반응형
'알고리즘' 카테고리의 다른 글
<백준>2743번 단어의 길이 (0) | 2018.01.05 |
---|---|
<백준> 11403번 경로 찾기 (0) | 2018.01.04 |
<백준> 9095번 1, 2, 3 더하기 (0) | 2018.01.02 |
<백준> 7576번 토마토 (0) | 2017.12.30 |
<백준> 1152번 단어의 개수 (0) | 2017.12.29 |