728x90
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[26];
for(int i=0;i<arr.length;i++) {
arr[i] = -1;
}
String a = sc.nextLine();
for(int i=0;i<a.length();i++) {
char ch = a.charAt(i);
if(arr[ch-'a']==-1) {
arr[ch-'a']=i;
}
}
for(int val : arr) {
System.out.print(val + " ");
}
}
}
우선적으로 알파벳갯수인 26을 크기로 가지는 정수 배열을 -1로 초기화한다.
이후 검사할 문자열을 받아오고
앞에서부터 한 글자씩 뜯어볼 것이다.
정수 배열에서 뜯어볼 글자에 해당하는 인덱스 데이터가 -1이라면 i로 초기화한다.
이 과정이 알파벳이 i번째에 있다고 표기하는 과정이며
알파벳 갯수에 맞게 정수 배열을 선언했기 때문에 beakjoon에서 o가 2번 있어도 두번째 o를 만났을 때는
o에 해당하는 인덱스에 i가 저장되어 있기 때문에 if문을 실행하지 않는다.
따라서 자연스럽게 처음 만난 위치만 저장되게 된다.
if문 안의 -'a' 도 마찬가지로 arr이 정수형이기 때문에
이를 통해야만 알파벳에 해당하는 아스키 코드 숫자를 사용할 수 있다.
728x90
'백준 단계별' 카테고리의 다른 글
[Java] 백준 1152: 단어의 개수 (0) | 2023.01.17 |
---|---|
[Java] 백준 2675: 문자열 반복 (0) | 2023.01.17 |
[Java] 백준 11720: 숫자의 합 (0) | 2023.01.13 |
[Java] 백준 11654: 아스키 코드 (0) | 2023.01.13 |
[Java] 백준 1065: 한수 (0) | 2023.01.12 |