[BOJ] 10809 알파벳 찾기 (JAVA)

joyful·2021년 4월 9일
0

Algorithm

목록 보기
43/65

✅ 문제

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

✅ 입력

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

✅ 출력

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

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

✅ 예제 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

풀이

  • 알파벳을 순서대로 담은 문자열을 선언한다.
  • 입력받은 단어를 구성하는 알파벳의 위치를 저장할 배열을 선언하고 배열 값을 '-1'로 초기화 한다.
  • 입력받은 단어의 구성 알파벳을 검사하기 위해 이중 for문을 돌린다. 알파벳이 아직 등장하지 않았고(idx의 값이 '-1'), 입력받은 단어를 구성하는 알파벳을 알파벳 순서 문자열에서 찾았다면 알파벳의 위치를 저장한다.

💻 코드

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.*;
import java.io.IOException;

public class Main {
	public static void main(String[] args) throws IOException {
		Scanner scanner = new Scanner(System.in);
		String s = scanner.nextLine();
		scanner.close();
		
		String alpa = "abcdefghijklmnopqrstuvwxyz";	// 알파벳 순서
		int[] idx = new int[26];	// 알파벳의 위치를 저장할 배열 생성
		Arrays.fill(idx, -1);	// 배열 값 초기화(-1 : 포함 x)
		
		for(int i=0; i<s.length(); i++) {	// 입력받은 단어 길이
			for(int j=0; j<alpa.length(); j++) {	// 알파벳 전체 검사
				if(idx[j] == -1 && (s.charAt(i) == alpa.charAt(j))) {	// 아직 등장하지 않은 경우
					idx[j] = i;	// 알파벳의 위치 저장
				}
			}
		}
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		for(int i=0; i<alpa.length(); i++) {	// 모든 알파벳 출력
			bw.write(idx[i] + " ");
			bw.flush();
		}
		
		bw.close();
	}
}
profile
기쁘게 코딩하고 싶은 백엔드 개발자

0개의 댓글