반응형
a~z 기본 출력값이 -1인 상황에서 예제 입력한 문자열의 각 알파벳이 별로 처음 등장한 위치를 -1에서 바꿔주는 문제이다.
접근 방법)
처음으로 26 크기를 가진 배열을 생성한 후 모든 배열 값을 -1로 설정한다.
그리고 입력 값을 받아와 입력 값 길이만큼 반복하는 for문을 만든 다음 char를 이용하여 알파벳을 하나씩 뽑는다.
하나씩 뽑은 알파벳이 26크기를 가진 배열에서 몇 번째 배열에 위치하는지 알기 위해서 아스키코드를 사용한다.
그리고 해당 배열에 위치한 알파벳이 입력값에서 처음 등장한 위치가 얼마인지 바꿔준다.
▷ 입력값에서 알파벳 처음 등장한 위치 찾기
str.charAt(i)을 그대로 사용하여 출력하게 되면 아스키코드 값이 출력된다.
a의 아스키코드 값은 97이므로 (int)ch - 97로 코드를 작성한다. 그러면 a는 0, b는 1, c는 3으로 위치를 뽑아낼 수 있다.
그리고 arr[num]==-1인 경우만 arr [num] 값을 처음 등장한 위치로 바꿔준다.
-1이 아닐 경우는 앞써 한 번 등장했다는 의미로 해석할 수 있다.
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
int num = (int)ch-97; //a의 아스키 코드 값이 97이므로
if(arr[num]==-1){ // 해당 알파벳이 등장하지 않은 경우
arr[num] = i;
}
}
정답 코드 1)
import java.util.*;
class Main {
public static void main(String[] args) {
int[] arr = new int[26];
for(int i = 0; i < 26; i++){
arr[i] = -1;
}
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
int num = (int)ch-97;
if(arr[num]==-1){
arr[num] = i;
}
}
for(int i = 0; i < 26; i++){
System.out.print(arr[i]+" ");
}
}
}
반응형
'Baekjoon 자바 코드 > 문자열' 카테고리의 다른 글
[백준] 1152번 단어의 개수 풀이 코드 (Java 자바) (0) | 2024.09.04 |
---|---|
[백준] 2675번 문자열 반복 풀이 코드 (Java 자바) (1) | 2024.09.03 |
[백준] 11720번 숫자의 합 풀이 코드 (Java 자바) (0) | 2024.08.26 |
[백준] 9086번 문자열 풀이 코드 (Java 자바) (0) | 2024.08.12 |
[백준] 2743번 단어 길이 재기 풀이 코드 (Java 자바) (0) | 2024.08.09 |