문제 - 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포하모디어 있는 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
입력 - 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력 - 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
풀이 -
이번 문제는 단어를 입력 받아서 그 단어의 알파벳이 어디에 있는지 알면 되는 문제입니다. 일단 10번줄 for문에서 letter이라는 배열을 -1값을 주어서 초기화합니다. 15번줄 for문에서 letter[word[i]-97]이 -1인 경우 그 값을 i로 설정합니다. 여기서 word[i]-97은 입력 받은 단어에서 문자를 골라서 97만큼 빼서 아스키코드에 의해 0~25값 사이가 됩니다. a는 0, b는 1, ... z는 25로 나타냅니다. 그래서 letter[word[i]-97]이 1이 나오면 word[i]에 나오는 값은 b라서 1의 위치에 값을 넣어주는 것입니다.
'알고리즘 공부 > 백준 알고리즘' 카테고리의 다른 글
1152 - 단어의 개수 (C++) (0) | 2024.03.04 |
---|---|
2675 - 문자열 반복 (C++) (0) | 2024.02.22 |
11720 - 숫자의 합 (C++) (1) | 2024.02.20 |
11654 - 아스키 코드 (C) (0) | 2024.02.19 |
9086 - 문자열 (C++) (0) | 2024.02.16 |