티스토리 뷰

[백준] 알파벳 찾기 10809번


문제 링크 : https://www.acmicpc.net/problem/10809



오늘은 문자열 중에서도 알파벳 찾기 문제를 풀어볼게요!


이 문제를 풀기 위해서는 C++을 사용한 알파벳 출력과 문자열의 find() 함수를 사용해야 합니다.


C에서는 ASCII 코드를 사용 가능하여 다음과 같이 알파벳을 출력할 수 있어요.


1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
    char c;
    
    for (c = 'A'; c <= 'Z'; c++) {
 
        printf("%c", c);
    }
    return 0;
}
 
cs

즉 변수 C가 for문을 돌면서 1씩 증가하고 a, b, c, d, '''', z가 출력되게 됩니다.

왜 그럴까요? C언어의 아스키코드 값 때문에 그렇습니다.(참조 : https://goo.gl/UHRmma)



다음으로 문자열의 find() 함수에 대해 알아보죠.


find 함수 : String 클래스의 함수로서 특정 문자열을 찾고, 그 시작 위치를 반환

find(문자) : 인덱스 0부터 해당 문자를 찾고, 시작 위치를 반환한다.

find(문자열) : 인덱스 0부터 해당 문자열을 찾고, 그 시작 위치를 반환한다.

find(문자열, 시작위치) : 시작위치부터 문자열을 찾고, 시작위치를 반환한다.


위 두 가지 개념을 사용하여 해당 문제를 풀면 코드는 다음과 같게 나와요.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
 
int main() {
 
    string str;
    cin >> str;
 
    int idx;
    for (char a = 'a'; a <= 'z'; a++) {
        idx = str.find(a);
        cout << idx << " ";
    }
 
    cout << '\n';
 
    return 0;
}
cs










9월 27일의 Daily 알고리즘은 이것으로 마칠게요















'Daily Algorithm Solving' 카테고리의 다른 글

[백준] 단어의 개수 1152번  (0) 2018.10.03
[백준] 저항 1076번  (0) 2018.09.29
[백준] 오르막수 11057번  (0) 2018.09.16
[백준] 쉬운 계단 수 10844번  (0) 2018.09.16
[카카오 코딩테스트]OpenChatting  (0) 2018.09.15
댓글