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;
}
'IT > BOJ 문제정리' 카테고리의 다른 글
백준 1003번: 피보나치 함수 (0) | 2021.07.06 |
---|---|
백준 2908번: 상수 (0) | 2021.07.05 |
백준 18127번: 모형결정 (0) | 2021.07.05 |
백준 1065번: 한수 (0) | 2021.07.05 |
백준 3052번: 나머지 (0) | 2021.07.05 |