문제 링크
https://www.acmicpc.net/problem/10809
나의 코드 (java)
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
// 단어를 받음
String S = sc.nextLine();
// 알파벳의 배열 (알파벳은 26개)
int arr[] = new int[26];
// 알파벳 배열 -1로 초기화
for (int i=0; i<arr.length; i++){
arr[i] = -1;
}
for (int j=0; j<S.length(); j++){
// 각 자리 문자를 변수에 담음
char c = S.charAt(j);
// 단어에 포함된 경우 처음 위치를 찾아야 하기 때문에 변경되지 않은 값만 변경하는 조건
if (arr[c-'a'] == -1){
// 문자 - 'a'로 몇 번째 알파벳인지 찾아서 배열에 몇 번째 숫자인지 입력
arr[c-'a'] = j;
}
}
// 배열을 차례대로 출력
for (int k=0; k<arr.length; k++){
System.out.print(arr[k] + " ");
}
}
}
알파벳의 위치는 알파벳 - 'a'로 배열의 위치를 구할 수 있다. 이 방식을 예로 들면 a의 경우 0이 이라는 값을 갖게 됩니다.
이는 아스키코드를 이용한 방법입니다.
이 문제는 같은 알파벳이 있을 때 처음의 알파벳 위치를 출력하게 되어 있기 때문에 이를 검증하는 if문을 만들어주어야 합니다.
'코딩공부 > 백준 (java)' 카테고리의 다른 글
[백준 1157] 단어 공부 (java) (0) | 2021.07.15 |
---|---|
[백준 2675] 문자열 반복 (java) (0) | 2021.07.08 |
[백준 11720] 숫자의 합 (java) (0) | 2021.07.08 |
[백준 11654] 아스키 코드 (java) (0) | 2021.07.08 |
[백준 1065] 한수 (java) (0) | 2021.07.08 |
댓글