공-부/백준 알고리즘
JAVA. 백준 알고리즘 단계별 문제 7단계(문제 번호 10809)
사랑짱
2021. 6. 1. 19:27
(문제 번호 10809)
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
문제 해결 포인트
입력 받은 문자열에 들어가는 알파벳들의 각 위치를 출력해야한다.
(위치는 0부터 시작한다. 문자열의 첫 알파벳은 위치가 0이다.)
문제 해결 과정
1. 먼저 각 알파벳의 위치를 가리킬 int형 배열을 생성하어 -1로 초기화 시킨다.
(index 0 - 'a' 위치 / index 1 - 'b' 위치 / index 2 - 'c' 위치 .....)
2. String 타입으로 문자열을 입력 받는다.
3. charAt()을 이용하여 각 인덱스에 해당하는 문자를 추출하여 ch 변수에 저장한다.
4. ch 문자의 위치를 앞서 만든 alpha 배열의 값으로 바꿔준다.
(이때, ch가 가지고 있는 아스키코드 값에서 'a' 또는 97을 빼주면 된다.)
※ 동일 문자가 포함되어 있는 경우, 처음 나타난 위치로 나타내야 하므로
조건문을 통해 동일 문자에 대해서는 적용하지 않도록 한다.
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
28
29
30 31 32 33 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class No03 {
public static void main(String[] args) throws IOException {
int[] alpha = new int[26];
for(int i = 0; i < alpha.length;i++) {
alpha[i] = -1;
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine();
for(int i = 0; i < str.length(); i++) { char ch = str.charAt(i);
if(alpha[ch -'a'] == -1) {
alpha[ch -'a'] = i;
}
}
for(int i : alpha) {
System.out.print(i + " ");
}
} //main
} //class
|
cs |