728x90
728x90
문제
-
알파벳 소문자로만 이루어진 단어 S에서 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력한다.
-
예를 들어 입력값이 abc이면, a는 0번째 위치 b는 1번째 위치, c는 2번째 위치이고 나머지 알파벳은 -1 값을 갖는다.
-
중복된 값의 시작 위치를 주의하자
소스코드
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string S; //입력 받을 문자열을 string으로 입력받음
int arr[26]; // 알파벳 위치 값을 저장할 배열
cin >> S;
for(int i=0; i < 26; i++)
{
arr[i] = -1; //모든 알파벳 위치 값을 -1으로 초기화
}
for(int i=0; i < S.length(); i++)
{
if(arr[(int)S[i]-97]<0) arr[(int)S[i]-97] = i;
//입력 받은 문자열의 시작 값에 대한 해당 알파벳 위치 값을 해당 index값으로 저장한다.
//시작 위치만 적기 위해서 조건문으로 음수일 때만 시행.
}
for(int i = 0; i< 26; i++)
{
cout << arr[i] << " ";
}
return 0;
}
다른 분의 소스코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
string alphabet = "abcdefghijklmnopqrstuvwxyz";
cin >> s;
for(int i = 0; i < alphabet.length(); i++)
cout << (int)s.find(alphabet[i]) << " ";
return 0;
}
다른 블로그에서 더욱 쉽게 풀으셔서 갖고 왔다. 역시 C++을 잘 활용하기 위해서는 C++의 STL를 잘 쓸 줄 알아야 하는 거 같다. string의 멤버 함수인 find를 이용하여, 입력받은 문자열에 해당 알파벳의 위치 index를 반환하고 없을 경우 -1이 반환된다.
728x90
728x90
'Language > C++' 카테고리의 다른 글
[C++][백준 2908][문자열] 상수 - 컴도리돌이 (0) | 2021.01.15 |
---|---|
[C++][백준 1157][문자열] 단어 공부- 컴도리돌이 (0) | 2021.01.14 |
[C++][백준 11720][문자열] 숫자의 합 - 컴도리돌이 (0) | 2021.01.12 |
[C++][백준 11654][문자열] 아스키 코드 - 컴도리돌이 (0) | 2021.01.11 |
[C++] 예외 처리(Exception Handling) - 컴도리돌이 (0) | 2021.01.01 |