[백준/JAVA] 10809번 알파벳찾기

HS JEON·2023년 9월 21일
0

codingTest

목록 보기
3/5

문제

  • 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

입력

  • baekjoon

출력

  • 1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
public class Main {
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
        //입력된 문자열로 변수 초기화
        String str = br.readLine();
		
        //알파벳 등장 횟수 저장용 배열 생성
		int[] arr = new int[26]; 
        
        //-1로 배열 초기화
		Arrays.fill(arr, -1);
        
        //문자 단위로 입력 문자열 검사, 배열에 횟수 추가. 
        //입력된 문자열의 charAt으로 한글자씩 읽고 
        //알파벳 순서로 인덱스 구하여 배열에 저장 
        //처음 등장하는 위치에서 변경되지 않도록 조건 추가
		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 < arr.length; i++) {
			bw.write(Integer.toString(arr[i]));
			if(i != arr.length -1) {
				bw.write(" ");
			}
		}
		bw.flush();
		
	}
}	

0개의 댓글