백준 10809번 java 자바 알파벳 찾기
소문자로 단어 하나를 입력한다. 위의 결과 처럼 출력하는 프로그램을 만든다.
알파벳은 26개있는데 a는 첫번째고 b는 두번째, c는 세번째에 위치한다.
bbac를 입력하면 출력할 때 각 알파벳이 해당하는 지점에서 입력될때의 위치를 출력한다.
하지만 b는 두 번 입력되었으므로 처음 등장했을때의 위치를 출력한다.
a는 세 번째에 입력되었으므로 2(0, 1, 2)를 a의 위치 첫번째에 출력하면 된다.
b는 첫 번째 두 번째에 입력되었으나 첫 번째 위치만(0) b의 자리에서 출력한다.
c는 네번째에 입력해서 3(0, 1, 2, 3)을 c 자리에서 출력한다. 위와같은 결과가 나온다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.util.Scanner;
//baekjoon_10809
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int check[] = new int[26];
for(int i=0; i<check.length; i++) {
check[i] = -1;
}
String st = sc.next();
for(int i=0; i<st.length(); i++) {
char c = st.charAt(i);
int tmp = (int)c;
tmp -= 97;
if(check[tmp] == -1)
check[tmp] = i;
}
for(int i=0; i<check.length; i++)
System.out.print(check[i] + " ");
}
}
|
cs |
line 7 : 알파벳은 a~z까지 26개이므로 26개를 출력해야 한다. 때문에 26개의 크기로 선언.
line 10 : 입력되지 않은 알파벳은 -1로 출력한다.
line 12 : String 변수에 next()로 입력받는다.
line 13 : 문자열 길이만큼 반복.
line 14 : 문자 하나를 charAt(i)로 추출한다.
line 15 : 추출한 문자를 정수로 변환하여 tmp 변수에 담는다.
line 16 : tmp에서 97을 빼는 이유는 15행에서 char 변수를 int로 변환하여 tmp에 집어 넣는데 알파벳 a가 아스키 코드로 97을 의미하기 때문에 97을 빼주어 0값을 가지게 한다.
check[] 배열에서 check[0]으로 접근하기 위함.
line 17 : 10행에서 전부 -1로 초기화했으므로 한번 도 접근 안한 배열 위치는 -1이다.
즉 첫번째 등장한 값이면 문자열의 몇번째 있는지를 의미하는 i값을 저장한다.
line 20, 21 : for문을 다 돌면 check배열을 출력한다.
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 1157 java 자바 단어 공부 [문자열] (5) | 2020.09.19 |
---|---|
백준 2675번 java 자바 문자열 반복 [문자열] (0) | 2020.09.19 |
백준 11720 java 자바 숫자의 합 (0) | 2020.09.13 |
백준 11654 자바 java 아스키 코드 (2) | 2020.09.13 |
백준 1065번 java 자바 한수 charAt()이용 (0) | 2020.09.09 |
댓글