https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
주의점
- 입력으로 주어지는 문자열 : 알파벳 소문자
- a ~ z 까지 모두 출력 ➡ 주어진 문자열의 각 문자가 처음으로 나오는 위치 출력
- 문자 위치 : 0부터 시작(문자열 첫 문자의 위치 = 0)
- arr 배열의 인덱스(원소 위치)
ch 가 갖고 있는 문자 인코딩값(=아스키코드값과 동일)에 - 'a' or - 97 해주기
a: 97 이라는 값에 대응됨(10진수) - 문자열을 앞에서부터 검사할 때 사전에 동일 문자가 존재하는 경우
앞에서 arr 배열의 값을 바꿨을 경우, 이후의 경우에서는 값 변경 X
= arr 의 원소값이 -1 일 때만 값 변경 = 초기에만 변경
풀이
1. Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] arr = new int[26]; //알파벳 a ~ z 개수
for(int i = 0; i < arr.length; i++) {
arr[i] = -1; //arr의 모든 원소값을 -1 로 초기화
}
String S = in.nextLine();
for(int i = 0; i < S.length(); i++) {
char ch = S.charAt(i);
if(arr[ch - 'a'] == -1) { //arr 원소값이 -1 인 경우에만 초기화
/*
arr 배열의 인덱스(원소 위치) :
ch 가 갖고 있는 문자 인코딩값(=아스키코드값과 동일)에 - 'a' or - 97 해주기
a: 97 이라는 값에 대응됨(10진수)
*/
arr[ch - 'a'] = i;
}
}
for(int val : arr) {
System.out.print(val + " ");
}
}
}
2. BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26]; //알파벳 a ~ z 개수
for(int i = 0; i < arr.length; i++) {
arr[i] = -1; //arr의 모든 원소값을 -1 로 초기화
}
String S = br.readLine();
for(int i = 0; i < S.length(); i++) {
char ch = S.charAt(i);
if(arr[ch - 'a'] == -1) { //arr 원소값이 -1 인 경우에만 초기화
/*
arr 배열의 인덱스(원소 위치) :
ch 가 갖고 있는 문자 인코딩값(=아스키코드값과 동일)에 - 'a' or - 97 해주기
a: 97 이라는 값에 대응됨(10진수)
*/
arr[ch - 'a'] = i;
}
}
for(int val : arr) {
System.out.print(val + " ");
}
}
}
성능
- BufferedReader > Scanner
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1157번 : 단어 공부 - Java (0) | 2022.03.18 |
---|---|
[백준] 2675번 : 문자열 반복 - Java (0) | 2022.03.18 |
[백준] 11720번 : 숫자의 합 - Java (0) | 2022.03.16 |
[백준] 11654번 : 아스키 코드 - Java (0) | 2022.03.16 |
[백준] 1065번 : 한수 - Java (0) | 2022.03.15 |
댓글