https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
c++로 백준 10809번 문제를 풀어보겠다.
문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
예제 입력 1 복사
baekjoon
예제 출력 1 복사
1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
<문제 풀이>
1. 26개의 숫자를 저장할 배열 arr을 선언한 후 기본값으로 -1을 저장해 놓는다.
2. string 형의 문자열 S를 선언한 후 입력받는다.
3. 문자열의 문자 하나가 저장되어 있는 인덱스 값을 배열에 저장한다.
(이때 최초의 인덱스 값을 저장하도록 조건을 걸어야한다.)
4. 배열에 저장된 숫자를 하나씩 출력한다.
이 문제에서 중요한 점 : 문제의 예제에서처럼 입력값이 baekjoon일때 같은 'o'라는 문자가 반복되어 나와도, 처음 나온 인덱스의 값을 저장하도록 해야한다. 즉 'o'자리에는 6이 아니라 5를 저장해야하기 때문에 조건을 걸어주어야 했다.
코드는 다음과 같다.
'C++' 카테고리의 다른 글
[백준 알고리즘] 1978번 : 소수 찾기, c++ (0) | 2022.01.14 |
---|---|
[백준 알고리즘] 1065번 : 한수, c++ (0) | 2022.01.14 |
[백준 알고리즘] 2750번 : 수 정렬하기, c++ (0) | 2022.01.13 |
[백준 알고리즘] 5565번 : 영수증, c++ (0) | 2022.01.13 |
[백준 알고리즘] 2576번 : 홀수, c++ (0) | 2022.01.12 |