본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 1/2

[BOJ/백준] 10809 알파벳 찾기

by 해적거북 2021. 7. 27.
728x90

● [문제번호 10809] 알파벳 찾기

 

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

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 

● 알아야 할 것

: vector 자료구조와 메소드

 

● 풀이 과정

: 문자열을 입력 받고

초깃값을 -1로 갖는 크기 26인 정수 vector 생성

처음 등장하는 경우 (vector[index] == -1 인 경우) 에만 값을 변경한다.

 

● 주의 할 것

: NULL

 

● 참고 할 것

: NULL

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

// 각 알파벳의 처음 등장하는 위치를 저장하기 위한 vector
vector<int> v;
// 문자열을 저장하기 위한 string
string str;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> str;
    
    // a ~ z 는 26개
    // 초깃값은 -1 (등장 안하는 경우 값을 바꾸지 않음)
    v.assign(26, -1);
    
    // 처음 등장한 경우에만 저장
    for(int s = 0; s < str.length(); s++)
        if(v[str[s] - 'a'] == -1)
            v[str[s] - 'a'] = s;

    // 출력
    for(int i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 1/2] - [203 - 자료구조 1 (참고)] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 1935 후위 표기식2 https://pirateturtle.tistory.com/170
2 1918 후위 표기식 https://pirateturtle.tistory.com/171
3 10808 알파벳 개수 https://pirateturtle.tistory.com/172
4 10809 알파벳 찾기 https://pirateturtle.tistory.com/173
5 10820 문자열 분석 https://pirateturtle.tistory.com/174
6 2743 단어 길이 재기 https://pirateturtle.tistory.com/175
7 11655 ROT13 https://pirateturtle.tistory.com/176
8 10824 네 수 https://pirateturtle.tistory.com/177
9 11656 접미사 배열 https://pirateturtle.tistory.com/178

 

728x90

댓글