[백준] n.10809 - 한 단어에 있는 알파벳의 위치 찾기

    SMALL

    1. 문제

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

     

    10809번: 알파벳 찾기

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

    www.acmicpc.net


    2. 주요 개념

    - 배열 (String, Character, int)

    - split

    - 아스키코드 (숫자를 문자로 변환)

    - charAt


    3. 나의 풀이 (*은 잘 안풀린 부분)

    import java.io.*;
    import java.util.*;
    
    public class Main {
    
      public static void main(String[] args) {
    
        Scanner s = new Scanner(System.in);
    
        String str = s.nextLine();
        // 단어 입력받기
    
        String[] split_arr = str.split("");
        // 단어 길이 측정을 위한 배열
    
        Character[] str_arr = new Character[split_arr.length];
        // ** string > char 형 변환을 위한 배열
        // 단어의 각 알파벳을 저장
    
        for (int i=0; i<split_arr.length; i++) {
          str_arr[i] = str.charAt(i);
          // System.out.println(str_arr[i]);
        }
        
        Character[] ascii_arr = new Character[26];
        // a~z 저장할 배열
        
        int[] idx_arr = new int[26];
        // a~z 위치 저장 배열
    
        for (int i=0; i<idx_arr.length; i++) {
          idx_arr[i] = -1; // -1로 전부 초기화
        }
        
        for (int i = 97, j = 0; i <= 122; i++) {
          ascii_arr[j] = (char) i;
          // a~z 저장
          // System.out.println(ascii_arr[j]);
          j++;
        }
    
        for (int i = 0; i<ascii_arr.length; i++) {
          for (int j = 0; j<str_arr.length; j++) {
            if (ascii_arr[i] == str_arr[j]) {
              if (idx_arr[i] == -1) {
                idx_arr[i] = j; // 알파벳 포함 시, 인덱스 값 저장
              } else {
                continue;
              }
            } else {
              continue; 
            }
          }
          
        }
    
        for (int i=0; i<idx_arr.length; i++) {
          System.out.print( idx_arr[i] + " ");
        }
        
     }
    
    }


    4. 짚고 넘어가기!

    - String과 Char은 서로 형변환 X > charAt을 통해 문자열에서 문자를 뽑아 Character 배열에 따로 저장!

    - 초기 위치 값을 -1로 설정 > 값이 존재하면 위치값(index 값으로 바뀌도록!)

    -  a~z가 들어있는 배열 생성 > 아스키코드(int형, 97~122)를 문자형(char)로 변환! 

    728x90

    댓글