[백준] 10809번 : 알파벳 찾기

JIHYUN·2021년 10월 17일
0
post-thumbnail

📌 문제

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

📌 입력

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

📌 출력

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

📌 예제 입력

📌 사용언어 : JAVA

📌 solution

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String S = scan.nextLine();
        scan.close();
        int[] arr = new int[26];

        for(int i = 0; i < arr.length; i++){
            arr[i] = -1;
        }
        for(int i = 0; i < S.length(); i++){
            char c = S.charAt(i);
            if(arr[c - 'a'] == -1){
                arr[c - 'a'] = i;
            }
            System.out.println(arr[c - 'a']);
        }
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }
}

😎 풀이

 이 비슷한 문제를 프로그래머스에서 풀었던가..? 하여튼 비슷한 문제를 풀었던거 같은데 푼 문제가 많다보니까..(깃허브에는 계속 커밋을 하는데 커밋한 문제들을 벨로그에 안올려서..)
하여튼 이 문제는 우선 알파벳의 개수만큼 출력이 나와야 하기 때문에 일단은 int형 배열을 길이가 26인 것으로 하나 만들어준다. 그리고 모든 원소를 -1로 해준다.
  그 다음 for문으로 S를 한 글자씩 잘라서 숫자로 변경해준다. 만약 이 숫자로 변경한 S의 글자 번째의 arr원소가 -1이라면 i로 변경해준다. 그래야 그 알파벳이 몇 번째에 나타났는지 알 수 있다. 그렇게 S의 모든 원소를 확인했다면 arr를 출력해주면 된다.

profile
이것저것 공부중

0개의 댓글