Notice
Recent Posts
Recent Comments
Link
DY의 세상구경
[Baekjoon Online Judge] 10809 알파벳 찾기 (C++, 문자열) 본문
반응형
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main()
{
char S[100];
scanf("%s", &S);
// a~z 가 처음 등장하는 위치 -1
int len = 0;
while (true)
{
if (S[len] == '\0')
break;
len++;
}
// length 구한 다음 a to z 로 시작
int a_count[26] = { -1, }; // -1 로 배열 전체를 초기화
for (int i = 0; i < 26; ++i)
{
a_count[i] = -1;
}
for (int i = 0; i < len; ++i)
{
int alphabet_index = int(S[i]) - 97;
if (a_count[alphabet_index] == -1)
{
a_count[alphabet_index] = i;
}
}
for (int i = 0; i < 26; ++i)
{
printf("%d ", a_count[i]);
}
printf("\n");
return 0;
}
벌써 주석 달고 그럴정도는 아니었는데.. 오랜만에 C를 하다 보니 헷갈려서 검색도 하고 주석도 달고 했다.
우선 입력받은 문자 길이 체크는 \0가 나올떄까지 해주었고, 알파벳 갯수만큼인 26개 길이의 배열을 만들어주었다.
보통 배열을 0으로 초기화하려면 { 0, } 하면 뒤에도 자동으로 0으로 초기화가 되는데 다른 숫자는 안되는것 같아서 for문을 돌면서 -1로 초기화 해 주었다.
입력받은 문자의 각 위치에 있는 알파벳에서 소문자 a 기준인 97을 빼주면 a=0이 되고 바로 문자가 나타나는 위치 i를 배열에 넣으면 된다.
반응형
'IT > ALGORITHM' 카테고리의 다른 글
[Baekjoon Online Judge] 11720 숫자의 합 (C++, 문자열) (0) | 2025.06.24 |
---|---|
[Baekjoon Online Judge] 9086 문자열 (C++, 문자열) (0) | 2025.06.13 |
[Baekjoon Online Judge] 11654 아스키 코드(C++, 문자열) (1) | 2025.06.11 |
[Baekjoon Online Judge] 27866 단어 길이 재기 (C++, 문자열) (0) | 2025.06.09 |
[Baekjoon Online Judge] 27866 문자와 문자열 (C++, 문자열) (0) | 2025.06.06 |