문제 : https://www.acmicpc.net/problem/10809

풀이 방법


이 문제의 풀이 방법은 알파벳 개수 문제와 비슷한 유형입니다. (배열을 처음에 -1로 초기화를 해줍니다.) 단지 이 문제에서는 문자열이 어느 위치에서 나타났는지 찾아서 배열에 넣어주면 됩니다. 동일한 문자열이 나올 경우 문자열이 처음 등장한 위치를 넣어주면 되는데, 이 부분은 -1이 아닌 경우에는 문자열이 등장했다는 것을 나타내므로 값을 바꾸지 않고 continue를 통해서 건너 뛰면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.*;

public class BOJ10809 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

int[] checkArr = new int[26];
for(int i=0;i<checkArr.length;i++)
checkArr[i]=-1;

String input = bf.readLine();
for(int i=0;i<input.length();i++){
int idx = input.charAt(i)-97;
if((checkArr[idx]) == -1){
checkArr[idx] = i;
}else
continue;
}

for(int i=0;i<26;i++)
bw.write(checkArr[i]+" ");
bw.flush();
bw.close();
bf.close();
}
}