반응형
문제
풀이
package step7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 알파벳 찾기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int[] arr = new int[26];
//배열 -1로 초기화
for(int i = 0; i < 26; i++) {
arr[i] = -1;
}
for(int i = 0; i < s.length(); i++) {
int alphabetIndex = s.charAt(i) - 'a';
if(arr[alphabetIndex] == -1) {
arr[alphabetIndex] = i;
}
}
for(int value : arr) {
System.out.print(value + " ");
}
br.close();
}
}
팁
- 알파벳이 단어에 포함되어 있지 않은 경우
-1을 출력
- 알파벳이 단어에 포함되어 있는 경우
해당 위치를 출력. 단, 같은 문자가 2번 이상 나오는 경우 첫 번째 위치를 출력한다.
- 알파벳의 소문자 갯수인 26의 크기를 가진 배열을 -1로 초기화한다.
- 입력받은 단어 s의 크기만큼 반복문을 돌며 각 알파벳을 charAt()을 통해 아스키코드값으로 반환한다.
- 배열의 크기인 26에 맞추고 a의 위치를 배열 인덱스 0에 저장하기위해 charAt() 값에서 'a'를 빼준다.
- 같은 문자가 2번 이상 나올경우를 대비하여, 인덱스가 -1인 경우만 해당 위치를 저장한다.
출처
반응형
'알고리즘 > Java' 카테고리의 다른 글
[백준/단계별로 풀어보기] 7. 문자열 - 1157.단어 공부 (Java8) (0) | 2021.09.06 |
---|---|
[백준/단계별로 풀어보기] 7. 문자열 - 2675.문자열 반복 (Java8) (0) | 2021.09.03 |
[백준/단계별로 풀어보기] 7. 문자열 - 11720.숫자의 합 (Java8) (0) | 2021.09.03 |
[백준/단계별로 풀어보기] 7. 문자열 - 11654.아스키 코드 (Java8) (0) | 2021.09.03 |
[백준/단계별로 풀어보기] 6. 함수 - 1065.한수 (Java8) (0) | 2021.09.02 |