SMALL
1. 문제
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
2. 주요 개념
- 배열 (String, Character, int)
- split
- 아스키코드 (숫자를 문자로 변환)
- charAt
3. 나의 풀이 (*은 잘 안풀린 부분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
// 단어 입력받기
String[] split_arr = str.split("");
// 단어 길이 측정을 위한 배열
Character[] str_arr = new Character[split_arr.length];
// ** string > char 형 변환을 위한 배열
// 단어의 각 알파벳을 저장
for (int i=0; i<split_arr.length; i++) {
str_arr[i] = str.charAt(i);
// System.out.println(str_arr[i]);
}
Character[] ascii_arr = new Character[26];
// a~z 저장할 배열
int[] idx_arr = new int[26];
// a~z 위치 저장 배열
for (int i=0; i<idx_arr.length; i++) {
idx_arr[i] = -1; // -1로 전부 초기화
}
for (int i = 97, j = 0; i <= 122; i++) {
ascii_arr[j] = (char) i;
// a~z 저장
// System.out.println(ascii_arr[j]);
j++;
}
for (int i = 0; i<ascii_arr.length; i++) {
for (int j = 0; j<str_arr.length; j++) {
if (ascii_arr[i] == str_arr[j]) {
if (idx_arr[i] == -1) {
idx_arr[i] = j; // 알파벳 포함 시, 인덱스 값 저장
} else {
continue;
}
} else {
continue;
}
}
}
for (int i=0; i<idx_arr.length; i++) {
System.out.print( idx_arr[i] + " ");
}
}
}
4. 짚고 넘어가기!
- String과 Char은 서로 형변환 X > charAt을 통해 문자열에서 문자를 뽑아 Character 배열에 따로 저장!
- 초기 위치 값을 -1로 설정 > 값이 존재하면 위치값(index 값으로 바뀌도록!)
- a~z가 들어있는 배열 생성 > 아스키코드(int형, 97~122)를 문자형(char)로 변환!
728x90
'Algorithm > Java' 카테고리의 다른 글
[백준] n.1152 - 문자열 속 단어 개수 세기 (공백 유의) (0) | 2023.05.21 |
---|---|
[백준] n.2675 - 문자열에 속해있는 각 문자를 원하는 횟수만큼 반복하기 (0) | 2023.05.19 |
[백준] n.9086 - 각 문자열의 first, last 문자를 함께 출력하기 (0) | 2023.05.17 |
[백준] n.27866 - 문자열 속 i번째 글자 출력 (0) | 2023.05.16 |
[백준] n.1546 - 조작된 평균 구하기 (0) | 2023.05.15 |
댓글