본문 바로가기
알고리즘/백준

10809번 알파벳 찾기

by 헤르쯔44 2022. 9. 22.
728x90
반응형

https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 

문제

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

입력

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

출력

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

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

 


풀이

알파벳(소문자) 개수만큼 배열의 길이를 설정해 선언한다.위치가 0부터 시작하기때문에 int형으로 선언하면 체크하기 어려운것같아서String으로 배열을 만들었다.

 

import java.io.*;



public class Main {

	public static void main(String[] args) throws IOException {


		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String word=bf.readLine();
		String[] alphabet=new String[26];
		for(int i=0;i<alphabet.length;i++)
		{
	
			for(int j=0;j<word.length();j++)
			{
                //알파벳 a부터 z까지 체크  해당 알파벳이 단어에 있으면서 배열에 값이 없을때 
				if((char)(i+97)==word.charAt(j) && alphabet[i]==null)
				{
				 
					  alphabet[i]=String.valueOf(j);
				 
					
				}
			}
		}
		
		//배열 출력
		for(int i=0;i<alphabet.length;i++)
		{
			if(alphabet[i]!=null)
			{
				System.out.printf(alphabet[i]+" ");
			}else {
				System.out.printf(-1+" ");
			}
		}
	}
	


	
}

배열에 들어가는 값은 첫번째 위치만 들어가면되기때문에 null일때만 값을 넣을수있게 조건문에 명시하였다.

 

출력할때 null인경우 -1을 출력하도록 구현하였다.

 

 

728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

1157번 단어공부[미해결]  (0) 2022.09.20
1224[실버4] 스위치 켜고 끄기  (0) 2022.09.16
[백준] 9498번 시험 성적 문제 -java11  (0) 2021.09.14