IT/BOJ 문제정리
백준 10809번: 알파벳 찾기
KimCookieYa
2021. 7. 5. 14:40
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
0. 알고리즘 분류
구현, 문자열
1. 문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
2. 풀이
string 클래스에 익숙하다면 금방 푼다. 중요한 것은 "단어가 처음 등장하는 위치"를 출력하는 것이다. 역시 자잘한 것을 실수하지 않는 것이 제일 중요한 것 같다. 사이즈가 26인 배열을 -1로 채우는 데에는 std::fill_n() 함수를 사용했다.
3. 코드
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string alp;
cin >> alp;
int nums[26];
fill_n(nums, 26, -1);
for (int i = 0; i < alp.size(); i++) {
char c = alp[i];
if (nums[c - 'a'] == -1)
nums[c - 'a'] = i;
}
for (int i = 0; i < 26; i++) {
cout << nums[i] << ' ';
}
return 0;
}