BAEKJOON 10809번:알파벳 찾기

Kim Hyen Su·2023년 6월 11일
0

⏲️ 알고리즘

목록 보기
8/95

10809번 문제

문제

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

입력

첫째 줄에 단어가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 
소문자로만 이루어져 있다.

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위
치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의
첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

🗝️포인트

  • 입력 단어 내 문자가 포함된 경우, 해당 문자가 처음 나온 위치의 인덱스 값을 알파벳 소문자 오름차순(a-z) 으로 출력.
  • 포함되지 않은 경우, -1 값을 출력해준다.
  • 단어(String)의 인덱스는 0부터 시작한다.

🗝️아이디어

  • ASCII 코드표를 참고하면, 'a' 문자는 97의 정수값을 가지므로 'a'에 0~25의 수를 더해주면 a~z의 문자(character)를 의미한다.
    ex) a+0 = a, a+1 = b, ... a+25 = z
  • 문자가 처음 나온 위치의 인덱스 값을 출력해주어야 하므로, indexOf() 메서드를 사용하여, 앞에 인덱스 부터 값을 찾도록 구현하였다.
  • 삼항 연산자 사용하여 값이 있는 경우 단어의 인덱스 값을 StringBuilder에 담고, 아닌 경우 -1을 담도록 구현하였다.

구현 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		StringBuilder sb = new StringBuilder();

		String str = br.readLine();

		for(int i=0; i < 26; i++){
			char ch = (char)(i + 'a');
            
			int n = str.contains(ch+"") ? str.indexOf(ch) : -1;
            
			sb.append(n).append(" ");
		}

		System.out.println(sb);

		br.close();
	}
}

참고 포스팅

profile
백엔드 서버 엔지니어

0개의 댓글