백준 10809번 [ 알파벳 찾기 ]

홍수민·2023년 2월 3일
0

BAEKJOON이다

목록 보기
16/18

https://www.acmicpc.net/problem/10809

오늘의 함수는 strlen !!
string과 length를 합친 거니까 당연히 문자열의 길이를 구하는 함수당

길이를 구하고자 하는 문자열이 S라면 strlen(S) 이렇게 적어주면 된다!!
그리고 이 strlen 함수를 사용하기 위해서는 string.h를 헤더파일로 선언해주어야 한다
이름에서 알 수 있듯이 string.h에는 문자열을 다루는 함수들이 많이 들어있다

strcmp, strcpy 등등 많은데 아직은 안 다룰거당!ㅎㅎ

아 그리고 이 코드 쓸 때 중요한 점은 S의 길이 한도를 100으로 잡으면 안 된다는 거였다!
첨에 100을 적었는데 '틀렸습니다!!'가 떴고, 다음에 101을 적었는데 '맞았습니다!!'가 나왔당

그 이유는 마지막 문자 NULL 을 포함해주어야 하기 때문이었다!

단어의 크기가 100을 넘지 않는다고 했으니 단어 자체의 길이는 최대 100, 거기에 NULL이 들어가면 101까지 해주어야 하는 것이당

#include <iostream>
#include <string.h>
using namespace std;

int main() {
  char S[101];
  cin >> S;

  int alp[26];
  for(int i=0; i<26; i++){
    alp[i] = -1;
  }

  for(int i=0; i<strlen(S); i++){
    if(alp[S[i]-'a'] == -1)
      alp[S[i]-'a'] = i;
  }

  for(int i=0; i<26; i++){
    cout << alp[i] << " ";
  }

  return 0;
}

이 코드는 우선 for문을 돌려서 각 알파벳에 해당하는 아스키코드 값을 -1로 만들어주는 것부터 시작한다. 알파벳이 단어에 포함되어 있지 않다면 -1을 출력해야 하기 때문이다. 그리고 단어의 길이만큼 for문을 돌려서 문자가 발견되면 -1로 설정되어 있던 위치값을 바꿔준다. 알파벳이 처음 등장하는 위치를 요구하는 문제이기 때문에 이미 -1에서 벗어났다면 그 값은 더 이상 바꾸지 않는다.

끝!!

profile
수만이다

0개의 댓글