개발자 바다의 파도

개발의 무인도에 갇혔다

알고리즘 공부/백준 알고리즘

10809 - 알파벳 찾기 (C++)

개바파 2024. 2. 22. 04:56

문제 - 알파벳 소문자로만 이루어진 단어 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의 위치에 값을 넣어주는 것입니다.

 

코드 복붙 주소 -  https://github.com/ResToEons/BaekJoonAlgorithm/tree/main/5%20-%20%EB%AC%B8%EC%9E%90%EC%97%B4/06%20-%20%EC%95%8C%ED%8C%8C%EB%B2%B3%20%EC%B0%BE%EA%B8%B0%20(10809)

'알고리즘 공부 > 백준 알고리즘' 카테고리의 다른 글

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