반응형
https://www.acmicpc.net/problem/10809
- 문제
- 문제 풀이
백준 10809번 알파벳 찾기는 브론즈 5 난이도의 구현 및 문자열 문제이다. 이 문제에서는 소문자로만 이루어진 문자열 1개가 주어진다. 그리고 각각의 알파벳이 처음 등장하는 위치를 출력하면 된다. 단, 한 알파벳이 등장하지 않으면 -1로 출력을 하면 되는 문제이다.
이 문제를 풀 때 우선 알파벳이 26개가 있으므로 사이즈가 26인 배열 arr를 선언한다. 그리고 모든 값을 -1로 초기화해준다. 그다음에는 문자열 s를 입력받는다. 그리고 각각의 인덱스는 for-loop을 돌려 charAt(index) 함수를 이용해서 접근한다.
이 문제에서는 아스키코드를 유용하게 쓸 수 있다. 모든 알파벳은 소문자이고 a의 아스키 값은 97이다. 따라서 arr [s.charAt(index) - 97]을 하면 a는 인덱스 0을 가지게 된다. 그리고 처음 등장하는 알파벳이 나올 때마다 배열을 갱신해주고 마지막에 배열을 iterate 하면서 인덱스들을 출력하면 끝난다.
자세한 코드는 밑에 있다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26];
for (int i = 0; i < 26; i++) {
arr[i] = -1; //모든 배열의 수를 -1로 초기화
}
String s = br.readLine();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (arr[(int)c - 97] == -1) { //아스키 코드 이용
arr[(int)c - 97] = i; //처음 등장하는 인덱스로 갱신
}
}
for (int i = 0; i < 26; i++) {
System.out.print(arr[i] + " ");
}
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2675번 : 문자열 반복 – JAVA [자바] (0) | 2022.07.07 |
---|---|
[백준] 2839번 : 설탕 배달 – JAVA [자바] (0) | 2022.07.07 |
[백준] 4344번 : 평균은 넘겠지 – JAVA [자바] (0) | 2022.07.07 |
[백준] 8958번 : OX퀴즈 – JAVA [자바] (0) | 2022.07.07 |
[백준] 3052번 : 나머지 – JAVA [자바] (0) | 2022.07.07 |
댓글